3

所以我试图用两个喷气背包来创造角色——其中任何一个都可以相互独立地发射,以产生一个偏离重心的脉冲(使用 Cocos2d、Chipmunk 和 SpaceManager)。

我的问题是,默认情况下,脉冲函数不考虑对象的当前旋转(即它指向的方向),因此无论方向如何,我使用的脉冲偏移和方向最终都是相同的字符指向。

我试图创建一个更逼真的模型 - 其中脉冲基于对象的现有旋转。我确定我可以以编程方式只维护一个向量变量,该变量保存角色指向的当前方向并使用它,但必须有一个更简单的答案。

我听说人们写了关于世界空间与身体相对坐标的文章,以及默认情况下世界空间的冲动如何,而身体相对可以解决我的问题。这是真的?如果是这样,您如何在这两个坐标系之间进行转换?

您能给我的任何帮助将不胜感激。

4

1 回答 1

1

如果您将角色的当前航向(旋转经过的角度,逆时针方向)存储在 中theta,并且您的脉冲向量在ix和中iy,那么世界空间向量将为

ix_world = ix * cos(theta) - iy * sin(theta);
iy_world = ix * sin(theta) + iy * cos(theta);

角度theta必须以弧度为单位cos才能sin正常工作。如果您需要将度数转换为弧度,请将角度乘以PI / 180.0

如果您想了解此公式的来源,请阅读此处

于 2011-03-24T21:12:05.693 回答