Недавно я следовал учебному пособию ThinMatrix по OpenGL по созданию игры на Java.Однако, поскольку он использует LWJGL2, а я использую LWJGL3, есть несколько отличий, которые требуют некоторого обходного решения.Я застрял в одном месте, в частности, касающемся создания персонажа от третьего лица на «игроке».
Я сделал достаточно, чтобы при нажатии и перетаскивании экрана камера вращалась вокруг игрока, какдолжно.Однако, когда я отпускаю и двигаю мышь, чтобы сделать еще один поворот, вместо продолжения от того места, где находится позиция, он сбрасывает его относительно того, где находится мой второй щелчок.
Поскольку LWJGL3 не имеет mouse.getDY() или mouse.getDX (), я сделал один в своем классе DisplayManager следующим образом:
public float getDY() {
newMouseY = (float) getMouseY();
float dy = newMouseY - oldMouseY;
oldMouseY = newMouseY;
return dy;
}
public float getDX() {
newMouseX = (float) getMouseX();
float dx = newMouseX - oldMouseX;
oldMouseX = newMouseX;
return dx;
}
И я называю его в своем классе камеры следующим образом:
private void calculatePitch(DisplayManager window) {
if (window.isMouseDown(GLFW.GLFW_MOUSE_BUTTON_LEFT)) {
float pitchChange = window.getDY() * 0.2f;
pitch -= pitchChange;
}
}
private void calculateAngleAroundPlayer(DisplayManager window) {
if (window.isMouseDown(GLFW.GLFW_MOUSE_BUTTON_LEFT)) {
float angleChange = window.getDX() * 0.3f;
angleAroundPlayer -= angleChange;
}
}
I 'Я просто не уверен, должно ли это работать, и я упускаю что-то действительно очевидное, или это невозможно сделать таким образом.Я довольно новичок в разработке игр.