Как уничтожить тело, основываясь на его положении в box2d? - PullRequest
0 голосов
/ 03 апреля 2011

Я новичок в объективе-c.В настоящее время я работаю над игрой с использованием cocos2d и box2d.Позвольте мне подробно описать мою игру:

В моей игре главный герой стоит на вершине здания.Ниже здания есть эта дорога.Враги проходят по дороге с различной случайной скоростью, входя в экран справа и выходя слева.Я создал врагов как b2_dynamicBodies и установил случайную скорость для каждого из них, используя SetLinearVelocity ().Главный герой стреляет во врагов.Когда снаряд поражает врагов, и снаряд, и противник уничтожаются.То, что я хочу сделать, это то, что враги, которые не стреляют и которые выходят за пределы экрана, я хочу уничтожить этих врагов, как только они выйдут за пределы экрана, проверяя их координаты.Я пытался использовать world-> DestroyBody (body), но это не работает.Пожалуйста, помогите мне в этом!

ps Я не создаю врагов как отдельные отдельные тела, но у меня есть метод, который создает тело и заставляет его двигаться, а затем я вызвал метод внутри init с интервалом времени.

1 Ответ

1 голос
/ 12 апреля 2011

Назначьте тег для спрайта. Здесь я использую 10.check, чтобы спрайт уходил за пределы экрана, получая их положение по оси X. Если оно меньше 0 или больше 480 (для ландшафта). Затем используйте следующий код уничтожить это тело.

for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{

    if (b->GetUserData() != NULL) {

        CCSprite *temp1 = (CCSprite*)b->GetUserData();

        if(temp1.tag == 10)
        {
            NSLog(@"Destroying here");
                            world->DestroyBody(b);
            [self removeChild:temp1 cleanup:YES];


        }

    }

}

...