使用GetAxisRaw()和transform.Translate()移动

时间:2018-02-08 02:41:06

标签: c# unity3d vector unity5

首先......我不是母语为英语的人,对于糟糕的英语技能感到抱歉,我正在尽力改善它们。

所以,我正在研究这个简单的角色移动系统,当我测试时,我意识到如果按下“W”或“S”键,播放器将向前移动,如果我按“A”或“D” “玩家将向后移动,而不是侧身,我一直在搜索和搜索,我找不到任何与我的问题类似的东西......有人可以帮助我吗?

    void Update () {
    // input
    Vector2 input = new Vector2 (Input.GetAxisRaw ("Horizontal"), Input.GetAxisRaw ("Vertical"));
    Vector2 inputDir = input.normalized;
    bool running = Input.GetKey (KeyCode.LeftShift);


    Move (input, running);

    if (Input.GetKeyDown (KeyCode.Space)) {
        Jump ();
    }
}

void Move(Vector2 inputDir, bool running) {

    float targetSpeed = ((running) ? runSpeed : walkSpeed);
    float realSpeed = targetSpeed * Time.deltaTime;


    Vector3 directionToMove = new Vector3 (inputDir.x, 0, inputDir.y) * realSpeed;

    transform.Translate (directionToMove);
}

1 个答案:

答案 0 :(得分:1)

  

当我按下“S”时,他不会向后移动,他也向前移动,并且   当我按“A”时他向后移动,当我按下“D”时他也会移动   向后

代码很好,应该按预期工作。

您的输入设置可能已被您或外部插件修改过。有时,这只是一个错误。只需重置它,“WASD”键就可以正常工作。

转到编辑 ---> 项目设置 ---> 输入然后点击设置图标并重置。

enter image description here

如果问题仍然存在,请确保您没有从其他脚本移动此对象。尝试禁用其他脚本以查看导致问题的脚本。