Я разрабатываю однопользовательский RPG-платформер в XNA 4.0. Я хотел бы добавить способность, которая заставляла бы время «останавливаться» или замедляться, и в котором только персонаж игрока двигался с первоначальной скоростью (аналогично заклинанию «Стоп времени» из серии «Врата Балдура»). Я не ищу точную реализацию, скорее некоторые общие идеи и шаблоны дизайна.
РЕДАКТИРОВАТЬ: Спасибо всем за большой вклад. Я придумал следующее решение
public void Update(GameTime gameTime)
{
GameTime newGameTime = new GameTime(gameTime.TotalGameTime,
new TimeSpan(gameTime.ElapsedGameTime.Ticks / DESIRED_TIME_MODIFIER));
gameTime = newGameTime;
или что-то в этом роде. Таким образом, я могу установить другое время для компонента проигрывателя и другое для остальных. Это, конечно, не достаточно универсально, чтобы работать для игры, где искажение времени, как это, будет центральным элементом, но я надеюсь, что оно должно работать в этом случае. Мне немного не нравится тот факт, что он замусорил основной цикл обновления, но это, безусловно, самый простой способ реализовать его. Я предполагаю, что это в сущности то же самое, что предложил тесселоде, поэтому я собираюсь дать ему зеленую галочку :)