3D 게임을 만들고 있는데 플레이어 메쉬가 항상 카메라 뒤쪽을 향하게해야합니다. 이미 2D 속도 벡터 (xz 평면에 따른 방향)를 얻는 방법을 알아 냈습니다. 그러나 이제는 속도 벡터의 방향으로 메시를 회전해야합니다 ...2D 방향 벡터가 주어지면 y 축을 따라 회전을 계산하는 방법은 무엇입니까?
기본적으로 모든 메쉬는 .rotation
속성을 가지고 있습니다. 속성은 3D 벡터입니다. 저는 단지 y 축상의 회전에 관심이 있습니다. 이것은 평면 (x-z) 평면에 수직 인 회전입니다.
회전이도를 사용하지 않지만, 라디안, 그래서 그것을 이런 식으로 뭔가 될 것이라고 생각 :
mesh.rotation.y = (mesh.direction.x - mesh.direction.z)*Math.PI*2;
그러나이 그것을 잘라하지 않는 것 ...
방향/속도는 2D 벡터와 같으며 -1과 1 사이의 실수로 구성됩니다. 항상 sqrt(x*x + y*y) == 1
이므로 속도는 모든 방향에서 동일해야하므로 "원"을 형성합니다 분명히. 만약 내가 제대로 이해하고
var c = Math.sqrt(cameraPos.x*cameraPos.x + cameraPos.z*cameraPos.z); //This is the distance from the camera to the mesh, which is at (0, 0) for simplicity of this presentation.
var rat = 1/c;
mesh.direction.x = cameraPos.x*rat; //Direction vector = the speed vector
mesh.direction.z = cameraPos.z*rat;
중복 : http://stackoverflow.com/questions/10773693/how-to-do-this-coordinate-system-operation-more-efficiently –