Я пытаюсь сделать камеру от первого лица в моем проекте. Я следовал этому уроку
http://www.morrowland.com/apron/tutorials/gl/gl_camera_3b.zip
Движение клавиатуры в порядке, но движение мыши странное. Я использую Java + JOLG, но я думаю, что нет большой разницы
Вот два метода, отвечающих за вращение:
public void rotate(float speed) {
aux = mView.minus(mPos);
mView.z = (float) (mPos.z + Math.sin(Math.toRadians(speed)) * aux.x + Math.cos(Math.toRadians(speed))
* aux.z);
mView.x = (float) (mPos.x + Math.cos(Math.toRadians(speed)) * aux.x - Math.sin(Math.toRadians(speed))
* aux.z);
}
public void mouseMove(float x, float y) {
float angle_y = 0.0f;
float angle_z = 0.0f;
if ((x == w/2) && (h/2 == y))
return;
robot.mouseMove(w / 2, h / 2);
angle_y = (float) ((w / 2 - x)) / 1000;
angle_z = (float) ((h / 2 - y)) / 1000;
mView.y += angle_z * 2;
if ((mView.y - mPos.y) > 8)
mView.y = mPos.y + 8;
if ((mView.y - mPos.y) < -8)
mView.y = mPos.y - 8;
rotate(-angle_y); // Rotate
}
и есть слушатель:
public void mouseMoved(MouseEvent e) {
Point p = e.getPoint();
camera.mouseMove((float)p.getX(),(float) p.getY());
}