1.类银河战士恶魔城游戏类型简述
类银河战士恶魔城游戏采用的是2D的表现手法,融合了2D横版过关、探索、解谜、RPG等等元素组合成的游戏品类,它与普通的2D横版卷轴向的游戏最大的区别在于类银河战士恶魔城的游戏进程属于非线性的,玩家会在同一个时间点会有许多不同的区域可以探索。
2.场景搭建
在unity中,我们可以采用2D或者3D的形式来搭建场景;
2D或者是3D各有各的好处,但如果使用3D场景来做,要注意角色和物品的碰撞器和刚体组件等需采用2D的,为的是减少后续bug的产生。
3.角色移动
3.1.获取玩家输入
unity自带的提供的对角色左右的控制键有键盘上的箭头左右键,键盘上的A和D键,即我们平常在PC端玩的2D游戏可以使用AD控制左右和箭头左右键控制左右。
在C#代码中我们如何调用?
horizontakIC(水平输入分量)即保存从系统获取的玩家对键盘的输入控制参数(AD键盘左右键),GetAxi获取玩家水平上的输入(AD键盘左右键)
PS:此时horizontakIC的值从-1到1,负数表示左方向,正数右方向。
3.2.角色移动
移动的参数设置:移动速度,移动到的地点,移动速度的中间量(暂存速度)-体现速度是从0开始的趋势
移动之前的参数设置:
(1)移动速度的中间量:速度*水平输入分量(有方向有速度)
(2)下一个位移点:移动速度的中间量*Time.deltaTime(保证在不同帧时移动距离是平衡的)
开始移动
(3) 移动时改变角色模型方向:
设置一个布尔型的变量初始为真,当转向时为假。
逻辑:当水平输入分量大于0时-向右移动并且布尔为真,执行转向方法
当水平输入分量小于0时-向左移动并且布尔为假,执行转向方法
转向简单实现即是将角色X方向的localScale变为负数。
3.3.角色跳跃
3.3.1.物理系统
像这种3D场景下模拟2D环境的游戏最好不要用unity自带的物理系统,例如,当角色落下平台的时候,用unity自带的物理系统角色会头朝下落地,而在类银河战士恶魔城游戏中或者说2D游戏中这是根本不符合常规的,所以unity自带的物理系统对于带2D平台跳跃性质的游戏来讲过于真实,不宜使用。
3.3.2.如何让角色落在平面上?-射线检测的方法实现
设置射线参数:射线原点,射线长度,射线方向,射线射到的层级
将角色的碰撞触发器范围通过代码的方式获取,然后存储起来。
射线检测到角色下方有无平台方法:
1.“画”一条射线:取碰撞触发器范围高度(Y方向)一半的距离加射线偏移量
2.发出射线的方法:应包含信息射线起点,方向,长度颜色等等
PS:射线的长度不能刚刚好契合碰撞触发器的范围,加上上一次Y方向上的位移量使射线长度长一点来检测下方有无平台
3.存储碰撞信息
4.修正角色落地时的Y方向位置(射线射到的与物体的交接点,_newP