ОК, IM следующий учебник RW на Box2D, я попал в ту часть, добавив тело спрайтов, хорошо Херес проблемы,я не могу добавить тело в мой спрайт Box2D Обновлен
я могу добавьте тело спрайта в «cat» спрайт, но когда я пытаюсь добавить тело в «автомобиль» спрайту, он просто падает. он отлично работает, если я добавляю тело только к «cat» спрайту, но почему не могу я добавить тело к «машине»? они оба используют тот же метод, чтобы добавить тело!
Heres метод добавления тела:
- (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);
}
вот код для 'кошки'
- (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];
}
нормально с кодом выше он выходит из строя, но если я удалить [self addBoxBodyForSprite:car];
из метода spawnCar, то оно не крах, и только «кошки» есть тело, а не «машина» ... .need помочь им очень смущен в данный момент. спасибо
К слову, вы добавляете игрока в качестве ребенка дважды. –
Весь ваш код хорош ... Я предлагаю вам проверить спрайты, есть ли у него изображения или кадр спрайта или нет .... Я загрузил тот же код, и он полностью работает ... – Marine