一、受伤的动画效果
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循环动画
此时人物一直播放死亡动画
由于连接任何状态,部分动画不需要循环播放,取消勾选即可


















