【问题标题】:How to trigger animator animation once如何触发动画师动画一次
【发布时间】:2015-09-17 18:27:10
【问题描述】:

我有一个 mecanim 角色,我在动画师中为其设置了动画。我添加了 4 个触发器来触发不同的动画。我的问题是,按下左/右键盘按钮时触发运行动画的最佳方式是什么?我现在所拥有的是动画不断被触发,因为我在Update() 中有代码。我该怎么做才能让它只触发一次并循环播放该动画?

我有这个工作:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Animator))]
public class AnimationController : MonoBehaviour {

    Animator animator;

    bool running = false;

    void Start() {
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update () {
        if(Input.GetButton("Horizontal")) {
            if(!running) {
                animator.SetTrigger("Run");
                running = true;
            }
        }

        if(Input.GetButtonUp("Horizontal")) {
            animator.SetTrigger("Idle");
            running = false;
        }

    }
}

但似乎完成此任务所需的更多,尤其是随着动作和动画列表的增长。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    animator.SetTrigger 有一个内部布尔值,当你进入状态时变为真,当它退出状态时变为假,因此不需要布尔值,如果你在 out 转换事件中检查Has Exit Time 属性,它会等待动画完成here 你可以在文档中看到它

    【讨论】:

    • 循环动画怎么样?
    • 对于循环动画最好不要使用触发器,触发器是一次性动画,当它们结束时你想从它们中返回
    • 对于走路和跑步之类的事情,你应该在速度等机械参数中创建一个浮点变量并设置它,并在转换中检查速度是否大于 0,如果大于 10 则步行,然后运行
    猜你喜欢
    • 2012-08-10
    • 1970-01-01
    • 2016-04-16
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2021-08-10
    相关资源
    最近更新 更多