Как реализовать движущиеся платформы с Cocos2d, TMXTiledMaps и Chipmunk - PullRequest
2 голосов
/ 13 ноября 2009

Я делаю медленный, но уверенный прогресс в игре Cocos2d, но я застрял в создании движущихся платформ.

Главный персонаж нуждается в физике и обнаружении столкновений, и поэтому является формой / телом бурундука. Я написал класс для перебора TMXTiledMap, чтобы сократить количество тел в пространстве бурундука. Так с такой картой

----------
--------x-
-xxx----x-
----------

вместо того, чтобы иметь 5 отдельных тел (rects), есть два тела, одно - три плитки шириной, другое - две плитки высотой.

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

Однако, тела должны двигаться вместе с плитками, чтобы это работало правильно. И вот где я застрял. Тела статической массы, так что ...

platformShape-> body-> p = cpv (x, y);

Ничего не делает (я предполагаю, что это ожидаемое поведение).

Но если я установлю их массу на что-либо кроме статики, вся физика вступит в игру, и тела будут вести себя не так, как ожидалось, или они будут вести себя отлично, в зависимости от того, как вы на это смотрите. Они двигаются хаотично и вращаются, когда попадают в другое тело (например, главного героя). То, что я ищу, - это типичный тип движущейся платформы, который вы ожидаете найти в типичной игровой платформе, которая плавно движется в любом заданном направлении.

У меня вопрос; Кто-нибудь реализовывал что-то подобное раньше и какова была ваша техника? Или, если бы вы реализовали нечто подобное, как бы вы это сделали?

Соответствующий код здесь . Я положил его в пустышку, так как считаю, что это скорее концептуальное недоразумение, чем все остальное.

1 Ответ

3 голосов
/ 15 ноября 2009

Оказывается, нужно позвонить

cpRehashStaticShapes

На самом деле очевидно, но, по-моему, легко пропустить.

...