Реализация сохраненного призрака для каждого уровня в игре - PullRequest
4 голосов
/ 09 декабря 2010

Я разрабатываю видеоигру для iPhone. Я хочу, чтобы на каждом уровне сохранялся «призрак» из лучшего пробега, как в Mario Kart.

Я уже реализовал это, но я использовал метод грубой силы, который сохраняет (x, y, вращение) значения в каждом кадре (60 в секунду). Излишне говорить, что это очень дорого, особенно для мобильных устройств.

Полагаю, я мог бы реже хранить данные и интерполировать их при рендеринге, но я не уверен на 100%, как это сделать и будет ли это хорошо выглядеть.

Кто-нибудь делал это раньше? Как бы вы это реализовали? Есть ли стандартный подход?

1 Ответ

1 голос
/ 09 декабря 2010

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

Самый простой подход - записать начальное положение объекта иего вектор движения (скорость x, y, z в виде смещений в единицу времени).Вам не нужно будет снова записывать его для этого объекта, пока он не изменит свою скорость и / или направление.Затем вы просто записываете прошедшее время, новую позицию и новый вектор движения (теоретически вам не нужно снова записывать позицию, только векторы, но я бы рекомендовал сделать это, чтобы иметь проверочное значение - после того, как программаотлаженный можно от него отказаться).Затем для воспроизведения вы помещаете объект в исходное положение и для каждого временного кадра добавляете к нему смещение движения, пока оно не достигнет времени для следующей записанной позиции.И так далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...