Unity学习笔记:Mecanim相关脚本

任意状态

using UnityEngine;
using System.Collections;

public class AnyStateTest : MonoBehaviour
{
    public float playerHP = 5;
    private Animator anim;
    private bool flag = true;
    private void Start()
    {
        anim = this.GetComponent<Animator>();
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if(playerHP>0)
            playerHP -= 1;
        }
        AnimFunc();
    }
    private void AnimFunc()
    {
        if (playerHP <= 0 && flag)
            anim.SetBool("DieBool", true);
    }
    /// <summary>
    /// 死亡动画最开始事件
    /// </summary>
    public void DieStart()
    {
        anim.SetBool("DieBool", false);
        flag = false;
    }
    /// <summary>
    /// 死亡动画最结束事件
    /// </summary>
    public void DieEnd()
    {
        Destroy(gameObject);
    }
}

脚本添加动画事件

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class AnimEvent : MonoBehaviour
    {
        private Animator anim = null;
        public int number = 0;
        private void Start()
        {
            anim = GetComponent<Animator>();
            //获取默认层播放的动画
            AnimatorClipInfo[] clipInfo = anim.GetCurrentAnimatorClipInfo(0);
            var animEvent = new AnimationEvent();
            //动画播放第5秒添加事件
            animEvent.time = 5;
            animEvent.functionName = "AnimEventFunc";
         
            clipInfo[0].clip.AddEvent(animEvent);
        }
        private void AnimEventFunc()
        {
            print((number++).ToString());
        }

    }

猜你喜欢

转载自blog.csdn.net/huanyu0127/article/details/106086156