(M)unity事件events执行设置人物受伤动画

通过事件的添加和设置可以完成对受伤后可能的操作,包括反弹,受伤动画反弹,ui设置。


ps

叠加动画的设置

1.设置不同的动画图层,完成动画效果的叠加(例如一边idle,一边因为受伤而变红)

步骤②为设置权重,权重与上一个图层相同
步骤③为设置混合模式,addictive模式可以完成动画的叠加
在这里插入图片描述

受伤变红动画的绘制
添加属性->选择sprite renderer->在需要的帧修改属性

在这里插入图片描述


脚本添加

1.在动画脚本中添加对受伤动画参数的设置(将受伤动画参数设置为trigger,触发则开始播放,调整动画的transition时,播放一次就返回上一级动画,如图

在这里插入图片描述
在这里插入图片描述

    void Update()
    {
        SetAnimation();
        
    }

    public void SetAnimation()
    {
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
        anim.SetFloat("velocityY", rb.velocity.y);
        anim.SetBool("isGround", pc.isGround);
        //anim.SetFloat("crouch", cr.isCrouch);
    }
//受伤由于只发生一次,不需要在update中逐帧检测,通过事件的添加完成
    public void PlayerHurt()
    {
        anim.SetTrigger("hurt");
    }

2.在角色脚本受伤函数中完成事件的添加

using UnityEngine.Events;
添加命名空间

public UnityEvent<Transform> OnTakeDanmage;
由于事件中需要完成的操作可能包含位移,所以加入transform组件作为参数

③受伤后减血,进入无敌状态,同时执行受伤事件

    public void TakeDamage(Attack attacker)
    {
        //如果无敌,则直接返回
        if (invulnerable)
        {
            return;
        }
        //Debug.Log(attacker.damage);
        if (currentHealth - attacker.damage > 0)
        {
            currentHealth -= attacker.damage;
            //触发一次伤害,就变成无敌
            TriggerInvulnerable();

            //执行受伤
            OnTakeDanmage?.Invoke(attacker.transform);

        }
        else {
            currentHealth = 0;
        }
           
    }

④在ontakedamage事件中注册事件:受伤动画
将动画脚本拖入到下边脚本框中,右侧选择动画脚本中的受伤函数
在角色掉血时执行注册表中的函数,这里只添加了受伤动画

在运行时触发会执行该脚本,操纵触发器变量,选择runtime only

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2f325deb2777494bb65b06d61902c10b.png

⑤运行完成受伤动画的播放

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值