【Unity 学习笔记】动画系统(续)和事件

在上一篇笔记中,我们使用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已经为我们自动写好了模板,方便我们在动画开始、动画播放中、动画结束时实现各种各样的方法。

命名一下脚本文件,打开。

根据提示取消注释,添加需要的代码。

猜你喜欢

转载自blog.csdn.net/qq_65021355/article/details/130330451