一、受伤的动画效果
1齿轮控制当前动画图层的权重
2、层级
当前动画层为add,所以不会覆盖之前的动画层,而是添加一个动画层
3、受伤闪烁
调用颜色的值,实现受伤闪烁
4、录制动画
点击时间轴,插入关键帧
伤害图层选择add,填入动画状态,进行连接
设置参数Trigger
条件为触发
播放完即可返回
二、动画器关联代码
1、打开PlayerAnimation代码
2、由于Trigger是单次执行的方法,不能放在update中,单独创建一个方法
三、UnityEvent(事件)
此处,人物受伤减血,可能触发声音、位移、闪烁、动画
如何触发多个,即为事件
1、必须调用命名空间
2、开始创建事件
1、类型
创建类型为Event
《》中传入信息(此处受伤后退,传入transform)
OnTakeDamage是自定义的事件名
2、方法
在此处事件触发,即可调用所有的添加方法
3、启动事件
固定的写法
“ 事件名?.Invoke ”
事件有一个transform参数 传入攻击者的攻击方向
四、人物受伤反弹
1、定义两个变量
2、定义一个受伤的方法,传入参数
受伤害为真
XY的值为零,也就是停止运动
计算人物方向:当前位置 减去 攻击者位置 (我左为负,我右为正)乘以反弹力
如果玩家距离攻击者远,这个值可能会很多大,此时需要归一化,normalize
3、给刚体添加力的作用
取反
函数中调用的参数和事件中的参数一致,即可快速选择此方法
五、动画状态机
此时玩家受到碰撞后一直为受伤状态
1、在动画上添加代码
2、动画状态机
此代码是一个继承动画状态机,是一个写好代码的模板
包含动画进入、持续、退出
只需删除注释,即可使用
在这里设置为
false
六、玩家死亡
1、创建玩家死亡状态和方法
2、关闭所有状态
3、设置参数
4、增加事件
5、Loop循环动画
此时人物一直播放死亡动画
由于连接任何状态,部分动画不需要循环播放,取消勾选即可