2011-03-04 47 views
3

所以即时尝试创建两个jetpacks的人物 - 其中任何一个都可以相互独立地发射创建一个脉冲偏移重心(使用Cocos2d,Chipmunk和SpaceManager)。如何创建一个基于旋转的脉冲向量(Cocos2d,Chipmunk,Spacemanager)

我的问题是,默认情况下,脉冲函数没有考虑到对象的当前旋转(即它指向哪个方向),因此我使用的脉冲偏移和方向是相同的重要的是角色指向什么方向。

我试图创建一个更逼真的模型 - 冲动是基于对象的现有旋转。我确定我可以通过编程方式维护一个矢量变量来保存角色指向和使用的当前方向,但必须有一个更简单的答案。

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

任何帮助你可以给我将非常感激。

+0

听起来像你只需要将你的冲动从物体空间转换到世界空间。 – 2011-03-16 22:48:25

+0

我听过人们之前说过 - 但我似乎找不到具体的方法来做到这一点。 cocos2d中是否有一个预定义的方法,即时在这里丢失? – Salman 2011-03-22 03:55:04

回答

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

+0

花栗鼠内置功能如何?我们还不能使用函数'cpVect cpBodyLocal2World(cpBody * body,cpVect v)' 和'cpVect cpBodyWorld2Local(cpBody * body,cpVect v)'? – Salman 2011-03-27 18:06:46

+0

我对Chipmunk一无所知。 – Alex 2011-03-28 00:18:43

相关问题