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