cocos2d-iphone - 如何创建基于旋转的脉冲矢量(Cocos2d、Chipmunk、Spacemanager)

标签 cocos2d-iphone physics game-physics chipmunk

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

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

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

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

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

最佳答案

如果您将角色的当前方向(旋转的角度,逆时针方向)存储在 theta 中,你的脉冲向量在 ixiy ,那么世界空间向量将是

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

角度theta cos 必须以弧度表示和 sin正常工作。如果您需要将度数转换为弧度,请将角度乘以 PI / 180.0 .

如果您想了解这个公式的来源,请阅读 here .

关于cocos2d-iphone - 如何创建基于旋转的脉冲矢量(Cocos2d、Chipmunk、Spacemanager),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196171/

相关文章:

math - 游戏设计中的数值积分、Runge-Kutta、RK4

ios - 当节点下面的节点被删除时,节点不会移动

java - Java 中的 2D vector 旋转

ios - 使用 Cocos2d-x 打开游戏中心 UI

android - Android 设备上的最大图像大小

ios - Cocos2d for iOS 中具有二维能力的纹理

c++ - MPI 实时物理

ios - 正交tilemap cocos2d游戏在iPhone上运行时为什么会出现tile之间的空隙?

python - Python 中的非弹性碰撞

physics - GameMaker Studio 物理对象精确碰撞