好吧,我关注box2d上的RW教程,我已经将部分添加到sprite中了,好的是问题,
我可以在'cat'精灵上添加精灵体,但是当我尝试将一个体添加到'car'精灵时,它只会崩溃.. 如果我只为'猫'精灵添加一个身体,它可以正常工作,但为什么我不能为'汽车'添加一个身体? 他们都使用相同的方法来添加身体!
这是添加身体的方法:
- (void)addBoxBodyForSprite:(CCSprite *)sprite {
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(sprite.position.x/PTM_RATIO,
sprite.position.y/PTM_RATIO);
spriteBodyDef.userData = sprite;
b2Body *spriteBody = _world->CreateBody(&spriteBodyDef);
b2PolygonShape spriteShape;
spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2,
sprite.contentSize.height/PTM_RATIO/2);
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteShapeDef.density = 10.0;
spriteShapeDef.isSensor = true;
spriteBody->CreateFixture(&spriteShapeDef);
}
这里是'cat'的代码
- (void)spawnCat {
CGSize winSize = [CCDirector sharedDirector].winSize;
CCSprite *cat = [CCSprite spriteWithSpriteFrameName:@"cat.jpg"];
//code here.......
[self addBoxBodyForSprite:cat];
[_spriteSheet addChild:cat];
}
继承人'汽车'的代码
- (void)spawnCar {
CCSprite *car = [CCSprite spriteWithSpriteFrameName:@"car.jpg"];
car.position = ccp(100, 100);
car.tag = 2;
[self addBoxBodyForSprite:car];
[_spriteSheet addChild:car];
}
确定上面的代码崩溃了,但是如果我从spawnCar方法中删除[self addBoxBodyForSprite:car];
,那么它就不会崩溃,只有'cat'有一个正文,而不是'car'....需要帮助我此刻非常困惑。感谢
答案 0 :(得分:0)
您可以在addBoxBodyForSprite方法的开头设置断点,并逐步执行代码以确定崩溃实际发生的位置吗?确定导致问题的确切原因很重要...方法中的所有内容都很好,因此您需要确保错误实际发生在此处。
如果您不知道如何执行此操作,请搜索Xcode调试。