box2d, уничтожение b2_staticbody при столкновении с b2_dynamicbody приводит к туннелированию - PullRequest
0 голосов
/ 30 августа 2011

Я собираюсь создать такую ​​функцию, как «Doodle Jump»: мяч (динамическое тело) прыгает после столкновения с платформой (статическое тело).

Вот как я это реализую: 1. определить собственный ContactListener:определите массив контактов, который вставляет тело, в то время как BeginContact, стирайте тело, пока EndContact 2. [self scheduleupdate] переберите массив контактов, если одно тело контакта представляет собой платформу (статическое тело), ​​уничтожьте его.

Проблема в том, чтомяч не будет прыгать после столкновения с платформой и платформа разрушается.Мяч просто пройдет через прежнее статичное тело.

Кто-нибудь может помочь?

1 Ответ

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

Как правило, вы хотите использовать b2_kinematicBody для симуляции платформы и установить ее LinearVelocity для ее перемещения.

Вы можете заставить платформу двигаться, учитывая иллюзию прокрутки экрана или прыжкового мяча.

Чтобы эмулировать отскок, вы можете установить значение восстановления ближе к 1.

Для уничтожения платформы вы можете установить простой contactListener:

//in the end of update: method

if (bodyASprite.tag == BALL_TAG && bodyBSprite.tag == PLAT_TAG)
    world->DestroyBody(bodyB);
else if (bodyASprite.tag == PLAT_TAG && bodyBSprite.tag == BALL_TAG)
    world->DestroyBody(bodyA);
...