0
저는 LWJGL에서 3D 게임을하고 있는데 마우스 지원 기능이있는 1 인칭 스타일의 카메라를 추가하고 싶습니다. 나는 현재 하나 있지만, 그것은 부드럽고 전혀 전혀 작동하지 않습니다. 나는 창을 집중시키는 것을 정말로 원한다. 그래서 마우스는 약혼하고 창문 위로 움직이지 않는다. 어떻게 구현할 수 있습니까? 요와 피치를 계산할 때 당신은 정수 나눗셈을하고LWJGL (마우스 지원)을위한 1 인칭 스타일 카메라
public class Camera {
private Vector3f position = new Vector3f(0,5,0);
private float pitch = 10;
private float yaw;
private float roll;
private float speed = 0.2f;
public Camera() {
}
public void move() {
yaw = - (Display.getWidth() - Mouse.getX()/4);
pitch = (Display.getHeight()/1000) - Mouse.getY();
if (pitch >= 90) {
pitch = 90;
}
else if (pitch <= -90) {
pitch = -90;
}
if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
position.z += -(float)Math.cos(Math.toRadians(yaw)) * speed;
position.x += (float)Math.sin(Math.toRadians(yaw)) * speed;
}
else if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
position.z -= -(float)Math.cos(Math.toRadians(yaw)) * speed;
position.x -= (float)Math.sin(Math.toRadians(yaw)) * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
position.z += (float)Math.sin(Math.toRadians(yaw)) * speed;
position.x += (float)Math.cos(Math.toRadians(yaw)) * speed;
}
else if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
position.z -= (float)Math.sin(Math.toRadians(yaw)) * speed;
position.x -= (float)Math.cos(Math.toRadians(yaw)) * speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
position.y -= speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
position.y += speed;
}
if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
System.exit(0);
}
}
public Vector3f getPosition() {
return position;
}
public float getPitch() {
return pitch;
}
public float getYaw() {
return yaw;
}
public float getRoll() {
return roll;
}
}