2013-04-21 3 views
0

У меня есть этот кусок кода, который должен проверить движение мыши и изменить камеру, если она делает:Почему эта часть кода работает обратным образом?

POINT myMouse; 
GetCursorPos(&myMouse); 

float Sensitivity = 10; 

if(myMouse.x != middleX || myMouse.y != middleY) 
{ 
    float DifferenceX = myMouse.x - middleX; 
    float DifferenceY = myMouse.y - middleY; 

    Rotation -> y += DifferenceX/Sensitivity; 
    Rotation -> x -= DifferenceY/Sensitivity; 
    if(Rotation -> x > 90) Rotation -> x = 90; 
    if(Rotation -> x < -90) Rotation -> x = -90; 
    if(Rotation -> y > 360) Rotation -> y = 0; 

    SetCursorPos(middleX, middleY); 
} 

По какой-то причине, DifferenceX на самом деле ось Y и DifferenceY фактически X оси.

Почему это?

+0

Чтобы уточнить, вы говорите, что код в вопросе дает правильные результаты, используя неправильную логику? Можете ли вы подтвердить, что у вас нет собственного переопределения POINT с y & x, определенным в обратном порядке? – kibibu

ответ

4
Rotation -> y += DifferenceX/Sensitivity; 
      //^^ y and x seems reversed 
Rotation -> x -= DifferenceY/Sensitivity; 

, вероятно, должен быть

Rotation -> x += DifferenceX/Sensitivity; 
Rotation -> y -= DifferenceY/Sensitivity; 
+0

Вы подумали бы, что, но перемещение мыши влево и вправо наклоняет камеру вверх и вниз – Split

+0

@Split, так что это на самом деле не является причиной странной ошибки? – taocp

+0

Мне просто интересно, почему это работает, только если это не так. – Split

Смежные вопросы