Задача C Указатели проблема с cocos2d - PullRequest
0 голосов
/ 12 сентября 2011

Что я пытаюсь сделать, это динамически инициализировать b2Body для любого объекта, который у меня есть.Вот код:

b2Body * mallet1;

[self setMalletProperties: &blockBodyDef : mallet1];

-(void) setMalletProperties:(b2BodyDef *)body :(b2Body *) mallet {
body->type = b2_dynamicBody;

mallet = world->CreateBody(body);
b2Vec2 newLocation = b2Vec2([self getScreenSize].width/2/PTM_RATIO,[self getScreenSize].height * .2833/PTM_RATIO);
//b2Vec2 newLocation = b2Vec2(x, y);
mallet->SetTransform(newLocation,0.0f);

mallet->SetFixedRotation(true);

b2FixtureDef fixtureDef;
b2CircleShape dynamicCircle;
dynamicCircle.m_radius = 0.85;        
fixtureDef.shape = &dynamicCircle;  
fixtureDef.restitution =0.1f;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.0f;
mallet1Fixture = mallet->CreateFixture(&fixtureDef);

if ([self getScreenSize].width == 768) {
    dynamicCircle.m_radius = 1.75;
}
}

Он не работает должным образом, потому что он не помещает созданное мной тело в переменную mallet1.Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 12 сентября 2011

Попробуйте это:

-(void) setMalletProperties:(b2BodyDef *)body :(b2Body **) mallet {
body->type = b2_dynamicBody;

*mallet = world->CreateBody(body);
 ...
}

Ваш текущий код не позволяет снова получить доступ к той же ссылке на молоток.

В качестве альтернативы вы можете изменить сигнатуру метода следующим образом: -(b2Body*) setMalletProperties:(b2BodyDef *)body и включают return mallet; в конце

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...