在上一篇笔记中,我们使用Unity的动画系统实现了移动和跳跃的动画,在这一篇笔记中我们将使用Unity事件的方式来实现受伤和死亡的动画。
首先创建一个受伤动画。由于素材中没有现成的受伤动画,我们只能手动创建一个简陋的闪烁动画。主要现实在角色受伤后的无敌时间人物闪烁的效果。
步骤:新建一个动画片段。点击Add Property,添加Sprite中的Color。
调整一下关键帧,是动画时常变为1秒。
在0.5秒处,我们将Color.a修改为0.5,这样就实现了角色的闪烁动画。
同时,可以将人物调整为红色,如此更符合普遍认知。
接着,我们在动画控制器中新建一个层级,调整其权重至1,并且将混合模式修改为Addictive。
因为我们这次使用的时间的方式触发动画,所有新建了一个条件参数hurt。
如果hurt触发了,则执行对应事件。
我们需要手动添加UnityEvents,该类包含在UnityEngine.Events里,使用前需先引用命名空间。
添加受伤和死亡事件:
[Header("事件")]
public UnityEvent<Transform> onTakeDamage;
public UnityEvent onDie;
返回unity查看一下。
可以看到我们的事件已经在Inspector窗口中显示出来了。
点击加号就可以添加相应的方法了,该方法会在事件触发时调用。
那么怎样才能触发事件呢,回到我们的脚本文件,通过Invoke()方法可以触发事件。
onDie?.Invoke();
一旦事件触发,其下的所有方法都会执行。
接着开始设置受伤动画的条件,一旦受伤,条件参数hurt就需要触发,我们需要用SetTrigger()实现这个功能。
public void PlayHurt()
{
anim.SetTrigger("hurt");
}
将其封装到一个方法里,并添加到事件中,hurt参数的传递就是随着事件的发生而发生。
这样受伤动画就实现了。
死亡动画和受伤动画的制作步骤相同。
首先添加条件参数die,绑定死亡事件,事件触发,死亡动画播放,不做重复演示。
同时,在动画片段中我们也可以添加事件。Unity已经为我们自动写好了模板,方便我们在动画开始、动画播放中、动画结束时实现各种各样的方法。
命名一下脚本文件,打开。
根据提示取消注释,添加需要的代码。