我做了一个跑步者,通过按下鼠标角色跑,当我释放它时停止,只需按下鼠标跑步动画打开和关闭,但当按下鼠标角色跑,停止并继续运行。
在视频中,当光标在游戏屏幕上时,我点击鼠标,当我将光标移开时,我没有点击。
Video of problem
移动字符的代码:
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");
}
}
}
过渡设置:第一节第一节第一节第一节第一次
1条答案
按热度按时间8zzbczxx1#
触发器可以叠加!
所以基本上会发生的是你堆积了很多触发器,每帧一个,然后它们都被同样多的转换消耗掉了。
对于您的用例,您更希望使用单个
Boolean
参数(比如Running
)并相应地配置转换然后
另一种方法(在您的情况下不需要,但只是为了完成)是在进入新状态时主动重置触发器。
我在this post的底部进一步描述了这一点。