我正在为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);
答案 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);
}
}