2014-01-09 3 views
3

У меня возникли проблемы с тем, что функция «warp» работает правильно в игре cocos2d/box2d.Добавление функции «warp» в игру cocos2d/box2d

У меня есть два элемента для моего главного спрайта, с которыми сталкивается - и если спрайт сталкивается/входит в один, то он выходит из другого - как функция варпа или телепорта.

Проблема заключается в том, что если мой спрайт сталкивается с «А», я затем перемещаю его в положение «В», и он должен выйти из «В» и продолжать двигаться в том же направлении и скорости, что и до « A "столкновение.

Но как только спрайт попадает в «B», он рассматривается как столкновение с «B», и он возвращается к «A»!

Так что, если мой спрайт попадает в функцию warp, он заканчивается в бесконечном цикле, где он просто постоянно прыгает с А на Б и обратно!

Я пробовал много временных исправлений, таких как добавление, например, (x + 10) в позицию, чтобы он удалял столкновение «B» при выходе из B, но это грязное решение.

Надеясь, что у кого-то может быть другая яркая идея!

+0

Как насчет того, чтобы обратить внимание на то, что следующее столкновение с B следует игнорировать. – iforce2d

ответ

3

Как насчет BOOL для отслеживания состояния столкновения?

Итак, когда сталкивается ваш объект A, установите

_isColliding = YES 

После того, как вы свободны от столкновений, установить

_isColliding = NO 

Любые столкновения, которые происходят в то время как _isColliding все еще установлен в YES будет проигнорировано ,

+0

Это то, что я закончил, и, похоже, работает нормально! – Richard

Смежные вопросы