좋은 하루. 나는 fps 게임에서 일하고 있는데, 카메라에 문제가 있거나 운동을 할 때 값이 비싸다 ... 운동을 할 때 카메라가 움직이지 않아서 ........ 나는 여러 가지 문제를 해결하려고 노력했다.카메라 방향에 따라 이동 이동
static public void UpdateCharacterPositionAndCamera(float time)
{
//mouse look update
float rotationSpeed = 3f;
if (Input.mouseState != Input.mouseStatePrevious)
{
float xDifference = Input.mouseState.X - Display.gd.Viewport.Width/2;
float yDifference = Input.mouseState.Y - Display.gd.Viewport.Height/2;
yRotation -= rotationSpeed * xDifference * time;
xRotation -= rotationSpeed * yDifference * time;
Mouse.SetPosition(Display.gd.Viewport.Width/2, Display.gd.Viewport.Height/2);
}
//camera
Vector3 cameraPosition = playerPos;
Vector3 cameraReference = new Vector3(0f, 0f, -1f);
Matrix rotationMatrix = Matrix.CreateRotationY(MathHelper.ToRadians(yRotation)) * Matrix.CreateRotationX(MathHelper.ToRadians(xRotation));
Vector3 transformedReference = Vector3.Transform(cameraReference, rotationMatrix);
Vector3 cameraLookat = cameraPosition + transformedReference;
viewMatrix = Matrix.CreateLookAt(cameraPosition, cameraLookat, new Vector3(0.0f, 1.0f, 0.0f));
projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, Display.gd.Viewport.AspectRatio, 0.1f, 2500.0f);
//movement
float moveSpeed = 5.0f;
Vector3 moveVector = new Vector3(0, 0, 0);
if (Input.keyState.IsKeyDown(Keys.Up) || Input.keyState.IsKeyDown(Keys.W))
moveVector += new Vector3(0, 0, -1);
if (Input.keyState.IsKeyDown(Keys.Down) || Input.keyState.IsKeyDown(Keys.S))
moveVector += new Vector3(0, 0, 1);
if (Input.keyState.IsKeyDown(Keys.Right) || Input.keyState.IsKeyDown(Keys.D))
moveVector += new Vector3(1, 0, 0);
if (Input.keyState.IsKeyDown(Keys.Left) || Input.keyState.IsKeyDown(Keys.A))
moveVector += new Vector3(-1, 0, 0);
if (Input.keyState.IsKeyDown(Keys.Q))
moveVector += new Vector3(0, 1, 0);
if (Input.keyState.IsKeyDown(Keys.Z))
moveVector += new Vector3(0, -1, 0);
playerPos += moveVector * moveSpeed;
}
당신이 그것을로 카메라 방향을 취하도록 이동 벡터를 변경하는 방법을 말해 줄 수 : 여러 가지 방법이 있지만, 난 그냥 필요한 수학 :(어쨌든
을 이해하지 못하는 것 같아요, 여기에 코드입니다 계정 ...?
! 하지만 문제가있다 : (내가 X 축을 뒤집을 때 ... 위로가 내려 가고 역으로 바뀐다. 그렇지 않으면 내가 돌아서지만 오히려 0,0,0 경계를 X 또는 Z에서 음수로 교차 할 때 ("Y"는 단지 정보를위한 것입니다.) – NewProger
아님 ... 알아 냈습니다. 동시에 다른 축에서 일어날 때 변형이 어떻게 든 올바르지 않습니다 ... – NewProger