【问题标题】:Why does this piece of code work in the opposite way?为什么这段代码以相反的方式工作?
【发布时间】:2013-04-22 08:53:00
【问题描述】:

我有这段代码应该测试鼠标移动并改变相机如果它这样做:

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 轴。

这是为什么?

【问题讨论】:

  • 澄清一下,您是说问题中的代码使用不正确的逻辑给出了正确的结果吗?您能否确认您没有自己对 POINT 的重新定义,其中 y&x 以相反的顺序定义?

标签: c++ camera mouse


【解决方案1】:
 Rotation -> y += DifferenceX/Sensitivity;
           //^^ y and x seems reversed
 Rotation -> x -= DifferenceY/Sensitivity;

应该是

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

【讨论】:

  • 你会认为,但左右移动鼠标会使相机上下倾斜
  • @Split 所以这实际上不是奇怪错误的原因?
  • 我只是想知道为什么它只有在错误的情况下才有效
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2017-06-08
  • 2018-07-20
相关资源
最近更新 更多