进入C ++和OpenGL,来自Python背景,你有 applyMovement & applyRotation (当然还有 worldPosition , worldOrientation )我觉得我错过了使用OpenGL的东西。基本上,我有一个玩家,一个立方体。
我希望立方体使用向上/向下箭头键来回移动,始终位于面对的位置。然后,使用左/右箭头,我希望玩家围绕它自己的原点旋转。所以我最终会得到一种旧的生化危机控制方案(坦克控制)
现在, glTranspose 和 glRotate 工作,但取决于我做第一次,它似乎向正确的方向移动,但旋转世界各地。
OR
它绕着它自己的轴旋转,但是这个动作总是符合世界轴。
我不打算移动/旋转世界或世界+相机,因为我正在寻找第三人称固定相机游戏。基本上我希望与Python中的 applyMovement / applyRotation 完全相同。但我对如何实施这一点持开放态度。
答案 0 :(得分:3)
由于您使用立即模式进行渲染,因此首先需要glTranslate对象中心的负向量,应用旋转,然后glTranslate回到它的位置。有效:
glTranslate( -center.x, -center.y, -center.z );
glRotate( ... );
glTranslate( center.x, center.y, center.z );
现在这仅适用于渲染部分。对于运动,您需要跟踪立方体旋转的角度,并使用正弦和余弦向前或向后移动。