【发布时间】:2014-10-01 03:41:30
【问题描述】:
我正在尝试使用 GLUT 和 OpenGL 实现第一人称移动系统。到目前为止,我的扫射从左到右,向前/向后运动正常工作。但是,我的问题来自环顾四周。我希望能够像大多数/所有 FPS 游戏一样使用鼠标的移动环顾四周。我正在使用 gluLookAt 进行所有运动/环顾四周。目前,对于环视部分,我有这个(取自教程)
gluLookAt(position.x, position.y, position.z,
position.x + direction.x, position.y + direction.y, position.z + direction.z,
up_vector.x, up_vector.y, up_vector.z);
然后,当有被动鼠标移动时,我会检查它并执行以下操作:
horizontal_angle += 0.005* float(x - origin_x);
vertical_angle += 0.005* float(y - origin_y);
direction_vector.x = cos(vertical_angle) * sin(horizontal_angle);
direction_vector.y = sin(vertical_angle);
direction_vector.z = cos(vertical_angle) * cos(horizontal_angle);
position.x = sin(horizontal_angle - 3.14f/2.0f);
position.y = 0.0f;
position.z = cos(horizontal_angle - 3.14f/2.0f);
up_vector = crossProduct(right_vector, direction_vector);
但是,这给了我一些非常奇怪、摇摆不定的效果,与我想要的效果并不特别接近。
【问题讨论】:
标签: c++ opengl mouse glut frame-rate