任意状态
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());
}
}