Unity 3D,动画不会在Bool上从空闲切换过来



我知道我的代码是不正确的,我正试图简单地添加一个动画器字段,专注于何时从空闲参与下一个动画。

我对我的AWSD控件很满意,但我能在网上找到的其他代码都使用不同的控件布局,我只是对如何在别人的代码上添加私人条目感到困惑。伙计们,我是Unity新手,也是编码新手。

请帮助! !

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private float speed = 5.0f;

private Animator animator;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
speed = 5.0f;
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.W))
{
transform.Translate(Vector3.forward * Time.deltaTime * speed);
}
if (Input.GetKey(KeyCode.S))
{ 
transform.Translate(-1 * Vector3.forward * Time.deltaTime * speed);
}
if (Input.GetKey(KeyCode.A)) { 
transform.Rotate(0, -1, 0);
}
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(0, 1, 0);
}
`animator.SetBool("IsMoving", true);
{
animator.SetBool("IsMoving", false);
}`

}
}


The reference I am using is this video from youtube  https://www.youtube.com/watch?v=2_Hn5ZsUIXM&t=552s

可以使用一个临时bool变量,在Update循环开始时为false,当与移动相关的按钮被按下时设置为true。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private float speed = 5.0f;
private bool isMoving;

private Animator animator;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
speed = 5.0f;
}
// Update is called once per frame
void Update()
{
isMoving = false;
if (Input.GetKey(KeyCode.W))
{
transform.Translate(Vector3.forward * Time.deltaTime * speed);
isMoving = true;
}
if (Input.GetKey(KeyCode.S))
{ 
transform.Translate(-1 * Vector3.forward * Time.deltaTime * speed);
isMoving = true;
}
animator.SetBool("IsMoving", isMoving);
if (Input.GetKey(KeyCode.A)) { 
transform.Rotate(0, -1, 0);
}
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(0, 1, 0);
}  
}
}

最新更新