【发布时间】:2021-05-19 14:26:16
【问题描述】:
正如我希望正确理解的那样,Animator“SetTrigger”会在动画完成后将动画设置为 false(如果我错了,请纠正我),但我的项目并非如此。
我有两种状态。默认(什么都不做)和移动。打开应用程序时会自动输入默认值,当我调用“SetTrigger”时会触发移动。我希望 Animator 会在动画完成后将此动画 id 设置为 false,然后返回默认状态。但事实并非如此——动画不断重复。我可以通过手动调用“ResetTrigger”来实现这一点,但是我需要检测动画何时完成,这对我来说并不方便。
我想实现动画在调用时只播放一次。有什么想法吗?
谢谢
编辑:添加动画控制器
public class TestAnimation : MonoBehaviour
{
private Animator _animation;
private static readonly int Playing = Animator.StringToHash("PlayingTrigger");
// Start is called before the first frame update
void Start()
{
_animation = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
_animation.SetTrigger(Playing);
// _animation.ResetTrigger(Playing);
IDebug.Log("Playing animation ");
}
if (Input.GetKeyDown(KeyCode.R))
{
_animation.ResetTrigger(Playing);
IDebug.Log("reseting animation ");
}
}
}
【问题讨论】:
-
没有动画界面的图像有点难以解释,但是您可以创建布尔变量并将其关联到动画之间的过渡条件(箭头)中。在某种程度上,当您在脚本中激活而不是布尔值时,动画开始,当您将其设置为 false 时,动画停止。我希望这对你有帮助:)