using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua {
///
/// 动作动画控制器
///
[RequireComponent(typeof(Animator))]
public class KinesisAnimator : MonoBehaviour {
protected int layerIndex;
protected string current;
protected Animator animator;
protected IKinesis kinesis;
public virtual void Awake() => animator = GetComponent();
/// 设置动作
public virtual void SetKinesis(IKinesis kinesis) => this.kinesis = kinesis;
/// 动画过渡
public virtual void Transition(int layerIndex, string name, float normalizedTransitionDuration = 0.1f) {
animator.SetLayerWeight(this.layerIndex, 0);
animator.SetLayerWeight(layerIndex, 1);
this.layerIndex = layerIndex;
Transition(name, normalizedTransitionDuration);
}
/// 动画过渡
public virtual void Transition(string name, float normalizedTransitionDuration = 0.1f) {
if (current == name) { animator.Play(name); }
else { animator.CrossFade(name, normalizedTransitionDuration); }
current = name;
}
/// 设置参数
public virtual void SetBool(string name, bool value) => animator.SetBool(name, value);
/// 设置参数
public virtual void SetFloat(string name, float value) => animator.SetFloat(name, value);
/// 触发动画特效
public virtual void AnimationEffects() => kinesis?.AnimationEffects();
/// 动画结束(有后摇)
public virtual void AnimationEnd() => kinesis?.AnimationEnd();
/// 动画退出(无后摇)
public virtual void AnimationExit() => kinesis?.AnimationExit();
}
}