控制在旋转时搞砸了

时间:2018-06-09 20:37:41

标签: c# unity3d

我正在为Unity游戏中的角色创建一个简单的控制器脚本。 但是,当我按下W并让我的角色转动时,它的运动会发生变化,并且所有的键绑定都会混乱。这是我的代码转换角色:

#include <glad/glad.h>
#include <GLFW/glfw3.h>
...

glfwMakeContextCurrent(window);

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{ 
  // Failed to create GLFW window
  glfwTerminate();
  return -1;
}
// now you can use OpenGL functions

我的其余代码

transform.rotation = Quaternion.Euler(0,90,0);

1 个答案:

答案 0 :(得分:1)

默认情况下,Transform.Translate函数在本地空间的对象中移动。当GameObject旋转时,这会使WASD键移动到对象所面对的位置。

要防止这种情况,请将其移至世界空间。您可以将Space.World传递给Transform.Translate函数的第二个参数。

void Update()
{

    var v = Input.GetAxis("Vertical");
    var h = Input.GetAxis("Horizontal");

    Vector3 translation = new Vector3(h, 0, v);
    translation *= moveSpeed * Time.deltaTime;

    transform.Translate(translation, Space.World);


    if (v == 1)
    {
        transform.rotation = Quaternion.Euler(0, 90, 0);
    }
}