Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 围绕另一个CCSprite圆形移动CCSprite_Xcode_Cocos2d Iphone - Fatal编程技术网

Xcode 围绕另一个CCSprite圆形移动CCSprite

Xcode 围绕另一个CCSprite圆形移动CCSprite,xcode,cocos2d-iphone,Xcode,Cocos2d Iphone,我试图做到的是: 我们有一个圆圈A和一个圆圈B 将圆B围绕圆A移动。我已经尝试创建一个CCNode并将圆B附加到它。在这种情况下,它可以完美地工作,但位置也是恒定的。我需要绕A移动圆圈并更新位置。我将在屏幕上有更多的对象,我将检查B是否与其他对象相交,但在这种情况下,我需要在旋转时更新位置。非常感谢你们的帮助。我正在使用cocos2dv3.0也许是这样的?把这个放在你的更新方法中。我在用于orbit的box2d项目中使用了此代码。根据你的需要改变它 b2Vec2 center = bod

我试图做到的是:

我们有一个圆圈A和一个圆圈B


将圆B围绕圆A移动。我已经尝试创建一个CCNode并将圆B附加到它。在这种情况下,它可以完美地工作,但位置也是恒定的。我需要绕A移动圆圈并更新位置。我将在屏幕上有更多的对象,我将检查B是否与其他对象相交,但在这种情况下,我需要在旋转时更新位置。非常感谢你们的帮助。我正在使用cocos2dv3.0

也许是这样的?把这个放在你的更新方法中。我在用于orbit的box2d项目中使用了此代码。根据你的需要改变它

    b2Vec2 center = bodyA->GetPosition();
    int smoothness = 1000;
    int radius = 100;

    for (int i = 0; i < smoothness; i++) {
        float angle = (i / smoothness) * 360 * DEGTORAD;

        b2Vec2 pos( sinf(angle), cosf(angle));
        b2Vec2 newposition = center + radius * pos;

        bodyB->SetTransform(newposition, bodyB->GetAngle());

 }

将B的定位点放在A的定位点的位置,然后在动画中将B旋转360。

此父子解决方案是可行的。对于碰撞检测,可以使用convertToNodeSpace和convertToWorldSpace获取旋转位置的绝对坐标。此外,如果需要边界框碰撞,只需使用boundingBox属性即可。啊哈,是的,谢谢。它现在可以工作了: