【unity】学习制作类银河恶魔城游戏-6-

碰撞检查

控制面板定义变量

射线功能

创建射线实体

分配射线实体

调整射线

编辑碰撞代码

创建地面和墙面的层

判断是否碰撞到了地面

这行代码的作用是:从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状态代码

完成!!

posted @ 2025-01-03 18:57  plusu  阅读(154)  评论(0)    收藏  举报