为什么我的玩家在传送而不是平稳移动?

时间:2021-04-12 11:49:38

标签: c# unity3d

我不知道为什么,但我的播放器移动不是很顺畅,但我必须多次按下按键才能将他移动几英寸,我无法按住按键让他走路。这是我的代码:

public class player : MonoBehaviour
{
private Rigidbody _rigidbody;

private void Awake() => GetComponent< Rigidbody> ();


private void Start()
{
  

 

}

void Update()
{

  if (_WalkRight) 
   transform.position += Time.deltaTime * Walk_speed * Vector3.right;

  if (_WalkLeft) 
   transform.position += Time.deltaTime * Walk_speed * Vector3.left;

  if (_WalkUp) 
   transform.position += Time.deltaTime * Walk_speed * Vector3.forward;

  if (_WalkDown) 
   transform.position += Time.deltaTime * Walk_speed * Vector3.back;

  
}

[SerializeField] private float Walk_speed = 30f;
[SerializeField] private float Run_speed = 60f;
private bool _WalkRight => Input.GetKeyDown(KeyCode.D);
private bool _WalkLeft => Input.GetKeyDown(KeyCode.A) ;
private bool _WalkUp => Input.GetKeyDown(KeyCode.W) ;
private bool _WalkDown => Input.GetKeyDown(KeyCode.S);


}

有人能指出我做错了什么吗?我也知道变量通常出现在代码的开头,我会修复它。

1 个答案:

答案 0 :(得分:1)

Input.GetKeyDown(KeyCode) 如果您在下一帧上按住它,则不会返回 true,即您需要重复按下所需的键。

改用 Input.GetKey(KeyCode)