Я делаю медленный, но стабильный прогресс с игрой на Cocos2d, но я застрял в создании движущихся платформ.
Главный герой нуждается в физике и обнаружении столкновений, поэтому он имеет форму / тело бурундука. Я написал класс для перебора TMXTiledMap, чтобы сократить количество тел в пространстве бурундуков. Итак, с такой картой
----------
--------x-
-xxx----x-
----------
вместо 5 отдельных тел (прямоугольников) есть два тела: одно - шириной в три плитки, другое - высотой в две плитки.
Мне удалось заставить код работать, чтобы определять, какие плитки являются частью движущейся платформы, и перемещать плитки по мере необходимости.
Однако тела должны перемещаться вместе с плитками, чтобы это работало должным образом. И здесь я застрял. Тела имеют статическую массу, так что ...
платформаShape-> body-> p = cpv (x, y);
Ничего не делает (я предполагаю, что это ожидаемое поведение).
Но если я устанавливаю их массу на любое другое значение, кроме статического, вся физика вступает в игру, и тела не ведут себя так, как ожидалось, или они ведут себя идеально в зависимости от того, как вы на это смотрите. Они перемещаются беспорядочно и вращаются, когда попадают в другое тело (например, главного героя). Я ищу типичный тип движущейся платформы, которую вы ожидаете найти в типичной платформенной игре, которая плавно движется в любом заданном направлении.
Мой вопрос; Кто-нибудь реализовывал что-то подобное раньше и какова была ваша методика? Или, если бы вы реализовали что-то подобное, как бы вы это сделали?
Соответствующий код находится здесь. Я положил его в пастебин, так как считаю, что это скорее концептуальное недоразумение, чем что-либо еще.