cocos2d + box2d:向点旋转

Posted

技术标签:

【中文标题】cocos2d + box2d:向点旋转【英文标题】:cocos2d + box2d: Rotation towards point 【发布时间】:2010-10-08 21:57:50 【问题描述】:

我正在尝试在我的 iPhone 应用程序中通过 box2d 的 GetUserData() 旋转绑定到 cocos2d 精灵的 box2d 主体。具体来说,我正在尝试获取最新的触摸位置并朝那个方向旋转我的 box2d 身体。

我对 box2d 相当缺乏经验,所以任何建议都将不胜感激。下面是我想象中如何操纵玩家 box2d 身体的快速说明。我想澄清一下:

1) 如果这是正确的做事方式。 2) 我如何计算玩家和最后一次触摸位置之间的角度,以便在该方向上旋转我的玩家。

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    b2Body *pBody = self.playerBody;

    if(pBody != NULL) 
        for(UITouch *touch in touches) 
            CGPoint location = [touch locationInView: [touch view]];
            location = [[CCDirector sharedDirector] convertToGL: location];

            CCSprite *myActor = (CCSprite*)pBody->GetUserData();
            pBody->SetTransform(pBody->GetPosition(), angleToRotateByInRadians);
        
    

【问题讨论】:

不要使用 SetTransform。 (对于查看此问题的任何人) 【参考方案1】:

获取两点之间的角度(以弧度为单位):

atan2(pointOne.x - pointTwo.x, pointOne.y - pointTwo.y)

【讨论】:

不应该是atan2(ydifference, xdifference)吗?

以上是关于cocos2d + box2d:向点旋转的主要内容,如果未能解决你的问题,请参考以下文章

单面平台(Box2D/Cocos2D)

Cocos2d / Box2d CCribbon 碰撞检测

重置精灵 - Box2d(Cocos2d)

炸弹 - Cocos2d/Box2d

创建身体 - Cocos2d/Box2d

边缘 - Cocos2d/Box2D