3D перетаскиваемая камера не работает при повороте камеры - PullRequest
0 голосов
/ 27 января 2019

Я работаю над неким городским застройщиком, где вы можете перетаскивать камеру мышью.Все отлично работает, принимаю при включении камеры.

Сценарий перетаскивания мышью:

private float angleArroundTarget = 0; // rotation arround the target \\

// draggable camera \\
    if(Mouse.isButtonDown(0)){
        targetPosition.x += delta * (Mouse.getDX() * 2);
        targetPosition.z -= delta * (Mouse.getDY() * 2);
    }

Если вы знаете расчет, в котором он не зависит от angleArroundTarget при перетаскивании камеры вокруг, пожалуйста, сообщите мне.

Спасибозаранее

1 Ответ

0 голосов
/ 27 января 2019

Полагаю, вам нужно что-то вроде:

if(Mouse.isButtonDown(0)){
    float dx =  delta * (Mouse.getDX() * 2);
    float dy = -delta * (Mouse.getDY() * 2);
    float c = Math.cos(angleArroundTarget);
    float s = Math.sin(angleArroundTarget);
    targetPosition.x += c * dx - s * dy;
    targetPosition.z += s * dx + c * dy;
} 

Этот код поворачивает ( delta * (Mouse.getDX() * 2) , -delta * (Mouse.getDY() * 2)) вектор на angleArroundTarget угол.


В зависимости от настроек вашей камеры приведенный выше код может не работать. Если это произойдет, попробуйте отрицать angleArroundTarget и / или dy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...