Я новичок в этом и понятия не имею, сейчас я кое-что прочитал, но почему-то все они, похоже, не объясняют этого.
Я работаю над игрой, чтобы войти в нее, но каким-то образом я теряюсь в этом.
GameScene.h имеет следующие объявления в интерфейсе:
Player *player;
b2Body *b2PlayerBody;
внутри GameScene.mm (используя box2d, так что нужно .mm), когда в функции я создаю игрока (который происходит из другого класса) я установил этот b2PlayerBody в тело, которое я использовал, чтобы передать его игроку класс и работа с ним.
-(void) addPlayerAtPosition:(CGPoint)p
{
CCLOG(@"Adding player at %0.2f x %02.f",p.x,p.y);
// Player
player = [[Player alloc] initWithPosition:ccp(p.x, p.y)];
player.anchorPoint = ccp(0,0.5);
[self addChild:player z:10 tag:kTagPlayerNode];
// Define the dynamic body.
//Set up a 1m squared box in the physics world
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
b2PlayerBody = world->CreateBody(&bodyDef);
// Define another box shape for our dynamic body.
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
b2PlayerBody->CreateFixture(&fixtureDef);
[player setPhysicsBody:b2PlayerBody];
}
В моем методе Update этого файла я вызываю (dt is delta):
[player update:dt withBody:b2PlayerBody]; //update player
В файле player.h у меня есть:
Склонение за
- (void)update:(ccTime)dt withBody:(b2Body *)body;
и внутри файла player.mm у меня есть
- (void)update:(ccTime)dt withBody:(b2Body *)body {
}
При запуске происходит сбой при обновлении с GameScene.mm без текста ошибки
[player update:dt withBody:b2PlayerBody]; //update player
Что я делаю не так?
Также может кто-нибудь объяснить мне, в чем разница (извините, если это глупый вопрос) между
b2Body * b2PlayerBody;
b2Body * b2PlayerBody; // Я знаю, что это слабое звено, но в чем разница.
b2Body b2PlayerBody;
также влияют ли эти методы ссылки на освобождение памяти в методе release?