第三人称角色移动问题

时间:2018-05-23 16:59:41

标签: c# unity3d

我正在尝试制作一个非常简单的动作脚本,玩家可以使用' wasd'使角色预制件向前,向后,向左和向右。我使用以下脚本来执行此操作:

public class PlayerInput : MonoBehaviour {

   public Camera camera;
   public float speed;

   void Update () {     

      float horizontal = Input.GetAxis("Horizontal");
      float vertical = Input.GetAxis("Vertical");

      Debug.Log("horizontal: " + horizontal);
      Debug.Log("vertical: " + vertical);
      // Set character position 
      Vector3 direction = transform.position;
      if(horizontal != 0.0f || vertical != 0.0f) {
         if(vertical < 0.0f) {
                direction -= camera.transform.forward;
            } else if(vertical > 0.0f) {
                direction += camera.transform.forward;
            }
            if(horizontal < 0.0f) {
                direction -= camera.transform.right;
            } else if(horizontal > 0.0f) {
                direction += camera.transform.right;
            }               
            transform.Translate(direction * speed * Time.deltaTime);
        }
    }
}

但是,无论我按下什么键,我的角色都只会向前移动。相机位于同一character预制件中我的角色后面。为什么我的输入只是向前移动?

我可以添加我的预制件和相机的照片,如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

我很傻..我需要新建我的Vector3 direction ...

Vector3 direction = transform.position;应为Vector3 direction = new Vector3();