Iphone 在box2d cocos2d中克隆现有的球形尖顶和对象

Iphone 在box2d cocos2d中克隆现有的球形尖顶和对象,iphone,ios,cocos2d-iphone,box2d,Iphone,Ios,Cocos2d Iphone,Box2d,所以我想要的是:我有一个球在我的屏幕上弹来弹去,这个球弹得很好,我可以任意向左或向右踢。 我是box2d新手,我希望我的应用程序中有多个球。 我在网上遵循了一个很好的教程,我非常理解我所做的,但是我现在尝试了一段时间来复制所有的东西,从球1开始,包括球后的“2”,所以我有两个完全相同的球在屏幕上弹跳。 但是没有成功 有没有简单的方法来“克隆”一个精灵+它的对象 这是代码:) 在代码中,您创建了一个球。我想你要做的是创建多个球,所有这些球在物理模拟中都有一个单独的物体 有几种方法可以做到这一点,但

所以我想要的是:我有一个球在我的屏幕上弹来弹去,这个球弹得很好,我可以任意向左或向右踢。 我是box2d新手,我希望我的应用程序中有多个球。 我在网上遵循了一个很好的教程,我非常理解我所做的,但是我现在尝试了一段时间来复制所有的东西,从球1开始,包括球后的“2”,所以我有两个完全相同的球在屏幕上弹跳。 但是没有成功

有没有简单的方法来“克隆”一个精灵+它的对象

这是代码:)


在代码中,您创建了一个球。我想你要做的是创建多个球,所有这些球在物理模拟中都有一个单独的物体

有几种方法可以做到这一点,但我现在将坚持“暴力方法”

创建如下静态函数:

static b2Body* CreateBall(b2World* world, CCNode* node, CCPoint position)
{
  // Create sprite and add it to the layer
    CCSprite* ballSprite = [CCSprite spriteWithFile:@"ball.png" rect:CGRectMake(0, 0, 52, 52)];
    ballSprite.position = ccp(position.x, position.y);
    [node addChild:ballSprite];

    // Create ball body and shape
    b2BodyDef ballBodyDef;
    ballBodyDef.type = b2_dynamicBody;
    ballBodyDef.position.Set(position.x/PTM_RATIO, position.y/PTM_RATIO);
    ballBodyDef.userData = ballSprite;
    b2Body* body = world->CreateBody(&ballBodyDef);

    b2CircleShape circle;
    circle.m_radius = 26.0/PTM_RATIO;

    b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 1.0f;
    ballShapeDef.friction = 0.2f;
    ballShapeDef.restitution = 0.4f;
    body->CreateFixture(&ballShapeDef);

    return body;

}
注意:我输入了这个。我没有编译它。可能需要稍微调整一下。

每次你想创造一个新的球,在世界上传球,在你想要的位置上传球时,都可以打这个电话

这是你需要的吗


在我的网站上,我有更大的例子(和代码)使用Box2D和图形等等。

你不能用同样的代码制作更多的球吗?
static b2Body* CreateBall(b2World* world, CCNode* node, CCPoint position)
{
  // Create sprite and add it to the layer
    CCSprite* ballSprite = [CCSprite spriteWithFile:@"ball.png" rect:CGRectMake(0, 0, 52, 52)];
    ballSprite.position = ccp(position.x, position.y);
    [node addChild:ballSprite];

    // Create ball body and shape
    b2BodyDef ballBodyDef;
    ballBodyDef.type = b2_dynamicBody;
    ballBodyDef.position.Set(position.x/PTM_RATIO, position.y/PTM_RATIO);
    ballBodyDef.userData = ballSprite;
    b2Body* body = world->CreateBody(&ballBodyDef);

    b2CircleShape circle;
    circle.m_radius = 26.0/PTM_RATIO;

    b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 1.0f;
    ballShapeDef.friction = 0.2f;
    ballShapeDef.restitution = 0.4f;
    body->CreateFixture(&ballShapeDef);

    return body;

}