我正在XNA 4.0中开发单人RPG平台游戏。我想添加一种使时间“停止”或放慢速度的功能,并且仅使玩家角色以原始速度移动(类似于《博德之门》系列中的“时间停止”法术)。我不是在寻找确切的实现,而是一些一般的想法和设计模式。
编辑: 谢谢大家的巨大投入。我想出了以下解决方案
public void Update(GameTime gameTime)
{
GameTime newGameTime = new GameTime(gameTime.TotalGameTime,
new TimeSpan(gameTime.ElapsedGameTime.Ticks / DESIRED_TIME_MODIFIER));
gameTime = newGameTime;
或类似的东西。这样,我可以为播放器组件设置不同的时间,而为其余组件设置不同的时间。当然,对于像这样的翘曲时间将是关键因素的游戏来说,它还不够通用。但是我希望它能在这种情况下起作用。我有点不喜欢它会乱扔主Update循环这一事实,但是它无疑是实现它的最简单方法。我想这与tesselode建议的基本相同,所以我要给他绿色的勾号:)