Как уничтожить тело на основе его положения в box2d?

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

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

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


person Farhan Ahmed Wasim    schedule 03.04.2011    source источник


Ответы (1)


Назначьте тег спрайту. Здесь я использую 10. Проверьте, что спрайт выходит за пределы экрана, получив его положение по оси 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];


        }

    }

}

person Anish    schedule 12.04.2011