Unity 动画在过渡时相互循环

问题描述 投票:0回答:1

我制作了一个跑步者,通过按下鼠标角色运行,当我释放它时停止,只需按下鼠标运行动画打开和关闭,但是当按下鼠标时角色运行,停止并继续运行。

在视频中,当光标在游戏屏幕上时,我点击鼠标,当我将光标移开时,我没有点击。

问题视频

移动角色的代码:

using UnityEngine;

public class StickmanMover : MonoBehaviour
{
[SerializeField] private float _maxSpeed;
[SerializeField] private float _speed;

private Rigidbody _rigidbody;

private void Start()
{
    _rigidbody = GetComponent<Rigidbody>();
}

private void Update()
{
    if (Input.GetKey(KeyCode.Mouse0) && _rigidbody.velocity.magnitude < _maxSpeed)
    {
        _rigidbody.AddForce(Vector3.forward * _speed * Time.deltaTime);
    }
}
}

改变动画的代码:

using UnityEngine;

public class StickmanAnimator : MonoBehaviour
{
private Animator _animator;

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

private void Update()
{
    if (Input.GetKey(KeyCode.Mouse0))
    {
        _animator.SetTrigger("Run");
    }
    else
    {
        _animator.SetTrigger("Idle");
    }
}
}

转场设置:

c# unity3d
1个回答
1
投票

触发器可以叠加!

所以发生的事情基本上是你堆积了很多触发器,每帧一个,后来它们都被同样多的过渡消耗了。

对于您的用例,您宁愿使用单个

Boolean
参数 - 让我们说
Running
- 并相应地配置您的转换

Idle --Running == true--> Run
Run --Running == false--> Idle 

然后做

private void Update()
{
    _animator.SetBool("Running", Input.GetKey(KeyCode.Mouse0));
}
© www.soinside.com 2019 - 2024. All rights reserved.