如何创建基于旋转的脉冲矢量(Cocos2d,Chipmunk,Spacemanager)

时间:2011-03-04 16:00:06

标签: cocos2d-iphone physics game-physics chipmunk

所以我试图用两个喷射包创建角色 - 其中任何一个都可以彼此独立地发射,以创建一个从重心开始的脉冲偏移(使用Cocos2d,Chipmunk和SpaceManager)。

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

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

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

非常感谢您给予我的任何帮助。

1 个答案:

答案 0 :(得分:1)

如果你有theta中存储的角色的当前标题(它旋转的角度,逆时针方向),你的冲动向量位于ixiy ,那么世界空间向量将是

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

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

如果您想查看此公式的来源,请阅读here