在Box2D游戏中以特定角度投掷b2body的问题

时间:2013-01-21 09:44:46

标签: iphone box2d box2d-iphone

在我的游戏中我有一个Ccsprite用于箭头,一个b2body用于球...我试图在我的箭头精灵指向的方向投掷球。这是我的代码...我正在计算箭头精灵的旋转,然后在那个角度施加冲动球......

float totalRotation = arrow.rotation ;

ballBody->ApplyLinearImpulse(b2Vec2(10.0f+cos(totalRotation)*25.0f,10.0f+sin(totalRotation)*25.0f), eggBody->GetWorldCenter());

BUt,这不正常......球在不正确的方向上被抛出。

1 个答案:

答案 0 :(得分:0)

CCNode(和CCSprite,继承自CCNode)的rotation属性以度为单位,顺时针旋转为正。 Box2D世界使用以弧度为单位测量的角度,逆时针旋转为正,这对于笛卡尔坐标系统更为常规。为了向Box2D函数提供正确的角度,您必须进行转换。在Cocos2D中,转换如下:

float angle = - 1 * CC_DEGREES_TO_RADIANS(totalRotation);

宏将totalRotation从度数转换为弧度,然后乘以-1,因为Box2D以逆时针方向测量正角度,这与CCNode旋转相反。