C++中船只动画的旋转
Rotation of a boat animation in C++
我正在用 c++ 创建一个攻击艇游戏,我的船在屏幕上跟随鼠标时遇到了问题。我的计划是让船更像船一样跟随鼠标(缓慢旋转,而不是瞬时,同时需要大约 4 秒才能完成 360 度转弯(,并且在大多数情况下它做了它应该做的事情。
当鼠标在屏幕左侧时(当我的鼠标越过 -x 轴时(,就会发生错误,当船跟随鼠标时,船转向错误的方向并执行 360,而不是跟随鼠标。
这是我用来转船的代码。
angle = atan2(delta_y, delta_x) * 180.0 / PI;
//Rotate the boat towards the mouse and
//make the boat turn more realistically
if (angle - rotate > 0) {
rotate += 1.0f; // turns left
} else if (angle - rotate < 0) {
rotate -= 1.0f; // turns right
}
if (angle - rotate >= 360.0f) {
rotate = 0.0f;
}`
你忘了夹紧角度差。它应该在间隔<-pi,+pi> [rad]
因此超出此间隔的任何角度差异都会导致此类问题。试试这个:
angle = atan2(delta_y, delta_x) * 180.0 / PI; // target [deg]
da = angle-rotate; // unclamped delta [deg]
while (da<-180.0f) da+=360.0f;
while (da>+180.0f) da-=360.0f;
if (da >= +1.0f) rotate += 1.0f;
else if (da <= -1.0f) rotate -= 1.0f;
else rotate = 0.0f;
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 使用 GLUT 使用键停止动画?
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 使用对象数组对 SFML 进行动画处理
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- ASCII 旋转光标 (TUI) 动画出现问题
- 围绕特定轴对 qt3d 旋转进行动画处理
- C++中船只动画的旋转
- Qt立即旋转动画
- c++中的动画,用旋转矩阵插值关键帧
- Opencv动画使用旋转矩阵旋转对象