11.受伤和死亡的逻辑和动画
注意:各种状态都可能直接切换到受伤动画
通过修改sprite renderer的颜色属性,实现受伤时的闪烁效果。
新建Hurt层,设为叠加层。注意:如果weight=0则该层无效果。
意思是在Base Layer层上叠加效果。
EXIT TIME是当前动画的百分比,设为1表示播放完100%的该动画后执行。
using UnityEngine.Events;使用unity事件,进行一系列受伤对应功能的处理。
在Character.csharp中定义了
之后会对应显示
可以让一个事件的发生产生多个结果。
off、Editor And Runtime或者Runtime Only。
off表示这个监听项目不会触发,
Editor And Runtime表示这个监听项目可以在编辑器下被触发,
Runtime Only表示这个监听项目只在游戏模式下被触发。
public void GetHurt(Transform attacker){ //向受伤反方向反弹
isHurt = true;
rb.velocity = Vector2.zero;
Vector2 dir = new Vector2((transform.position.x - attacker.position.x), 0).normalized; //归一化
rb.AddForce(dir * hurtForce, ForceMode2D.Impulse);
}
any state + 动画clip的loop勾选 会导致该动画一直执行。
any state + can transition to self 会导致动画卡住,其实应该是一直重复执行当前动画,所以一直卡在第一帧。