碰撞检查
控制面板定义变量
射线功能
创建射线实体
分配射线实体
调整射线
编辑碰撞代码
创建地面和墙面的层
判断是否碰撞到了地面
这行代码的作用是:从groundCheck的位置开始,向下(Vector2.down)投射一条射线,距离为groundCheckDistance,只检测whatIsGround指定的层上的物体。如果在这条射线上检测到了任何物体,则认为检测到了地面,方法返回true;否则,返回false。
修改GroundState
修改AirState
创建层
应用层
设置什么是地面/墙面
增加反转功能,使其左右移动时能够改变方向
定义反转变量
定义反转函数
定义何时反转?
应用控制反转函数
这种函数不应该一直被更新调用,因此做出修改,当有输入时调用函数
冲刺和冲刺时间
创建冲刺脚本PlayerDashState,快速生成函数和继承
定义冲刺变量
冲刺状态转换
设置冲刺动画
编辑冲刺状态代码
定时器更新代码
定义冲刺速度和持续时间
修改冲刺状态代码
升级冲刺
让冲刺不局限于只能在地面时才可以
删除在地面状态时的冲刺输入代码
在player中编译新的判定代码
调用CheckforDashInput
成功!现在在空中也可以冲刺了,但是,如果在向右移动时,突然按下左方向键和冲刺,那人物冲刺大概率无法反应过来导致还会向右冲刺,亦或者当我们跳起来时会有硬直,此时无法反向移动,只能向前冲刺,灵活性大大降低
因此我们要进行更严格的控制,定义一个冲刺的方向,让其与键盘输入方向同时变化
修改dash代码
给dashdir赋值
当没有键盘输入时,还是按照面朝方向进行冲刺
另一个存在的问题:当在空中冲刺后,人物下降时未播放降落动画而是播放静止动画
增加一条判断语句
冲刺冷却时间
给冲刺加入cd使人物不能一直冲刺
定义计时器和cd
cd功能
完成
空中移动
墙壁摩檫力
解决人物贴住墙壁就会黏住不动 的问题
创建材料,摩檫力改为0
给墙壁应用材料
人物墙壁状态
创建脚本
在Player中声明状态变量
创建动画
完善状态树
其他需要修改的地方同理
编辑代码
墙面判断
状态进入代码,应在AirState中编写,在地面碰到墙时不会触发
墙壁状态代码
在墙壁代码中涉及了竖直方向上的变化
因此在PLayerState中引用yInput
调整WallCheck检测线,确保能够正常墙壁检测(应使其在碰撞模型的边缘)
完成!
另外发现一个问题,当人物朝向左和朝向右时,WallCheck的射线与碰撞器的位置不同,这使得在进行爬墙的动画上位置会有出入
这是图片人物的中心点造成的,修改中心点
完成!!现在左右两边贴墙都不错
在墙上的跳跃
创建脚本
防止打断操作设置一个计时器
声明状态变量并实例化
让他可以跳起来
进入WallJump状态,从WallSlideState中进入
修改一下小问题
现在,当人物落地时,还会有一个滑行的速度
这是因为未退出跳墙状态,且还有跳墙状态的加速度
转换到静止状态代码
并且把加速度调为零
另外,当冲刺到墙上时,人物会优先完成冲刺再上墙,而不是打断冲刺直接上墙
修改一下dashState状态代码
完成!!