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



在我的游戏中,我有一个Ccsprite用于箭头,一个b2body用于球…我试着把球扔向我的箭头精灵所指向的方向。这是我的代码…我在计算箭头精灵的旋转,然后在那个角度上对球施加脉冲……

float totalRotation = arrow.rotation ;
ballBody->ApplyLinearImpulse(b2Vec2(10.0f+cos(totalRotation)*25.0f,10.0f+sin(totalRotation)*25.0f), eggBody->GetWorldCenter());

但是,这不是工作完全…球被扔向不正确的方向

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

float angle = - 1 * CC_DEGREES_TO_RADIANS(totalRotation);

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

最新更新