【问题标题】:using GetAxisRaw() and transform.Translate() to move使用 GetAxisRaw() 和 transform.Translate() 移动
【发布时间】:2018-02-08 12:25:59
【问题描述】:

首先...我不是以英语为母语的人,很抱歉英语不好,我正在努力提高他们。

所以,我正在研究这个简单的角色移动系统,当我测试时我意识到如果按下“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);
}

【问题讨论】:

  • 到底是什么问题?按“W”将向前移动(+z)。按“S”会将其向后移动(Z-)。向右移动=“D”键。左移动=“A”键。这不是“WASD”应该如何工作的吗?您是否正在尝试做其他事情?
  • 按“S”他不后退,他也往前,按“A”他后退,按“D”他也后退
  • 查看我在下面留下的答案

标签: c# unity3d vector unity5


【解决方案1】:

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

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

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

转到 Edit ---> Project Settings ---> Input 然后点击设置图标并重置它。 p>


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

【讨论】:

  • 嘿,谢谢,问题是来自其他脚本,现在我解决了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2019-08-28
  • 2018-03-02
  • 1970-01-01
相关资源
最近更新 更多