Задать вопрос

Движение персонажа под углом?

Как реализовывается движение героя в гору, т.е под некоторым углом в игре построенной на плитках (tiles)? Где можно про это почитать?
  • Вопрос задан
  • 1042 просмотра
Подписаться 6 Оценить Комментировать
Решения вопроса 2
@Mercury13
Программист на «си с крестами» и не только
Расскажу, как поступал я. Писал на Java ME, так что особо сложных идей не было.

У каждой плитки была алгоритмически заданная поверхность (pavement). В более новых версиях движка приделали и потолок — впрочем, неважно.
Для простоты введём несколько ограничений. Все они, разумеется, обходятся усложнённой логикой.
• Ни на чём, кроме плиток, персонаж стоять не может. Тогда можно обойтись флагом: isSupported: true/false.
• Поднимаясь по склону, персонаж не ударится головой в потолок. Кстати, у нас было два разных геймдиза и два разных подхода — когда один увидел этот баг, пошёл жаловаться, второй взял ограничение на карандаш и не делал таких уровней.
• Неровности достаточно велики, чтобы можно было проверить ноги слева и ноги справа — и понятно, на какой высоте ему стоять.
• Соотношение «площадь ног / размер хитбокса» достаточно велико, чтобы, пока персонаж падает, его гарантированно вытолкнуло из стены.
В зависимости от скорости персонажа и крутизны склонов подберём epsilon — диапазон поиска поверхности.
Предположим, наш персонаж стоит на чём-то и двигаем его вправо.
1. Сдвинем его туда, где он должен быть.
2. Попробуем подстроить высоту, взяв правую сторону ног и отыскав новую поверхность в диапазоне (y — epsilon, y + epsilon). То же самое с левой стороной ног. То, что выше — и есть наш новый y. Если не получилось — УПИРАЕТСЯ (см. шаг 3).
3. Если на шаге 2 персонаж не упирается в стену, проверим на упор весь хитбокс. Если упирается — вытолкнем его из стены, снова подстроим высоту по принципу 2.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Я делал через расчёт вектора смещения между двумя позициями и угла наклона, с учётом всех физических параметров игрового мира:
125a8971e9e24aed976aa13262855bd5.jpg
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы