cocos2d使用box2d引擎,在使用CCPhysicsSprite添加精灵的时候会出现编译不通过错误。
需要注意以下几点:
1.sprite.position=ccp(p.x,p.y);这行代码一定要在[sprite
setB2Body:body];之后。否则编译不通过。2.不要忘记添加[sprite setPTMRatio:PTM_RATIO];这行代码也要在setPosition之前
添加小球精灵示例代码:
#pragma mark 添加精灵 -(void) addNewSpriteAtPosition:(CGPoint)p { //创建小球精灵对象 ball=[CCPhysicsSprite spriteWithFile:@"ball.png"]; [ball setPTMRatio:PTM_RATIO]; //不要忘记 ball.tag=1; [self addChild:ball]; //创建小球物体 b2BodyDef ballBodyDef; ballBodyDef.type=b2_dynamicBody; ballBodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO); ballBody=world->CreateBody(&ballBodyDef); //创建小球物体的形状。 b2CircleShape circle; circle.m_radius=8.0/PTM_RATIO; //创建小球物体的夹具 b2FixtureDef ballShapeDef; ballShapeDef.shape=&circle; //形状 ballShapeDef.density=1.0f; //密度 ballShapeDef.friction=0.3f; //摩擦力 ballShapeDef.restitution=1.0; //恢复力 ballFixture=ballBody->CreateFixture(&ballShapeDef); [ball setB2Body:ballBody]; //将小球物体和精灵联系起来 ball.position=ccp(p.x, p.y); //一定要在上一行代码之后 }
Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法),布布扣,bubuko.com