using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Playables;
public class MonsterPlayableTest : MonoBehaviour
{
//需要赋值
public AnimationClip idleClip;
public AnimationClip attackClip;
private PlayableGraph graph;
private AnimationPlayableOutput output;
private AnimationClipPlayable idlePlayable;
private AnimationClipPlayable attackPlayable;
private bool isAttacking = false;
void Start()
{
var animator = GetComponent<Animator>();
graph = PlayableGraph.Create("AnimGraph");
graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);
output = AnimationPlayableOutput.Create(graph, "AnimOutput", animator);
idlePlayable = AnimationClipPlayable.Create(graph, idleClip);
attackPlayable = AnimationClipPlayable.Create(graph, attackClip);
graph.Play();
}
void Update()
{
// 按下K时播放攻击动画
if (Input.GetKeyDown(KeyCode.K))
{
PlayAttack();
}
// 检查 attack 播放完毕,恢复 idle
if (Input.GetKeyDown(KeyCode.L))
{
PlayIdle();
}
}
void PlayAttack()
{
output.SetSourcePlayable(attackPlayable);
attackPlayable.SetTime(0);
}
void PlayIdle()
{
output.SetSourcePlayable(idlePlayable);
idlePlayable.SetTime(0);
}
void OnDisable()
{
graph.Destroy();
}
}