Я делаю 2d платформер, в котором игрок может нажать кнопку и перезапустить уровень, только его предыдущий персонаж также будет запускать уровень одновременно, как будто они путешествуют во времени.
Я знаю, что другие игры уже делали это раньше, и я подумал о том, чтобы заставить игрового персонажа выполнять набор действий (Idle, Jumping, Walking Left и т. Д.), А затем обнаруживать изменения в этих действиях и регистрировать их список вместе с игровым временем. Поэтому, когда мне нужно, чтобы персонаж снова запустил уровень, я могу просто просмотреть список, меняя его действия в нужное время.
Это лучший способ сделать это? У кого-нибудь есть опыт в этом?
Спасибо.
2d
architecture
time-travel
Вуди Занцингер
источник
источник
Ответы:
РЕДАКТИРОВАТЬ:
Пожалуйста, смотрите ответ @ Bluescrn на этот вопрос; он уточняет слабости в воспроизведении элементов управления, а не векторов движения или положения.
-
Вы на правильном пути. Вот подход, который я бы использовал:
Контроллеры
Создайте класс Controller, который получает ввод с клавиатуры и передает его вашему персонажу. Тем не менее, также есть запись контроллера точно, когда значимые клавиши (например, стрелки, прыжок и т. Д.) Были нажаты и когда они были отпущены. Это будет хранить такую информацию:
Контроллер имеет два режима:
Персонажи
Когда ваш объект Character создан, он создает новый контроллер для себя. Персонаж может находиться в одном из двух режимов в любое время:
Уровни
Недавно начатый уровень
Когда вы начнете уровень, создайте одного персонажа. Теперь уровень начинается, и игрок делает свое дело.
Когда время сбрасывается
Когда уровень сбрасывается, сделайте три вещи:
Затем начинается уровень, и игрок делает свое дело.
источник
Если вы воспроизводите записанные входные данные, учтите последствия любых движущихся / разрушаемых / интерактивных объектов в мире, которые могли переместиться или изменить состояние при воспроизведении действий.
Кроме того, воспроизведение входных данных не будет работать точно, если ваша игра использует переменный временной шаг. Возможно, вы захотите рассмотреть обновление игры с фиксированным временным шагом (с интерполяцией для рендеринга с переменной частотой кадров)?
источник
Существует множество тем, посвященных системам записи / воспроизведения игр и т. Д., Которые, вероятно, должны стать краеугольным камнем ваших прошлых неудач.
Вот один из них: Как спроектировать систему воспроизведения
источник
Запись ввода с клавиатуры может быть не очень полезна в вашем случае. Однако вы можете создать сплайн со шкалой времени. Вы даже можете перемотать время, если ваш хитрый с силами, которые вам нужно применить
источник