Articles of 时间旅行

处理像Braid的时间转换或射手的Killcam游戏状态

我是一个非常没有经验的游戏开发者,我想知道如何实现像在游戏中重新开始游戏的时间,或跳回到特殊的时刻(killcam),并为用户重播。

正常和慢动作之间的过渡

我有一个游戏(C ++),我想在两个运动速度之间转换。 为了说明,玩家举起武器瞄准,而且在一个已知的持续时间内正在进行中,时间应该递减,直到达到目标速度。 线性减速很容易。 我们有一个起始速度(例如1.0),一个终点速度(例如0.2),并且可以确定我们在固定长度转换中的位置(例如2000ms) 但是,如果我线性减速,外观和感觉是错误的。 我怀疑觉得“正确”,在转型的早期应该放慢速度,然后以接近尾声的速度减速。 我的math不太好, 自从我绘制一个函数以来,已经有很长的一段时间了,而且我很less将这种东西引入代码中。 在猜测,使用1 / x或x ^ 2曲线的一部分可能会给我我想要的,但我仍然必须参数化,以适应。 这个或类似的东西一定是一个经常解决的问题,那么我可以在这里使用的最简单的方法是什么?

自定义更新function – 或 – 多个时间尺度

我正在尝试在游戏中创建一些有趣的时间尺度变体。 实质上,我想至less有两个,大概是三个或四个不同的时间尺度。 玩家 – 玩家时间表总是可能是游戏/场景时间表。 暴徒 – 暴徒的时间尺度可以改变(主要慢,但也可能更快),取决于施放法术或游戏中的其他效果。 环境 – 就像暴徒一样,环境可能会放慢或加快,这取决于一些游戏效果的发生。 这将控制陷阱,火把等东西 我正在考虑慢速时间法术等可能会减缓大多数暴民的事情,但也许不是其他事情(布尔标志),像时间元素或某种性质的东西。 我也希望可能会延缓环境时间,所以玩家可能会有一次性物品,让他们能够轻松地导航陷阱(但是如果他们仍然没有看到模式,那么他们就不能保证成功)。 将控制器脚本添加到侦听Time.deltaTime上调用乘法器的所有对象的脚本中,可能是一个选项,但是它笨重,必须在所有脚本中,必须在很多区域进行说明运动,战斗,可能相关的效果),而不是一个理想的select。 反过来说,同样的效果(例如巫妖施法速度慢 )可能需要相反的东西。 如果我的全局设置包含了受效果影响的玩家/暴民/对象的乘数,我仍然可以使用Time.deltaTime的乘数,但我仍然认为这会很笨重。 有没有人做过这个? 有什么好主意吗? 我查了一下,但没有发现任何有用的东西。 我已经考虑自定义Update()类,但我不完全确定如何实现它们。 也许扩展内置的FixedUpdate()类来考虑其他事情? 我知道Time.timeScale固有地适用于当前的场景,但是我可以创建由不同的脚本FixedUpdate()使用的Time实例吗? 我是否在意这个? 我觉得这不应该那么困难。

在Unity中,当我更改Time.timeScale时,怎样才能触发input/退出每一帧?

在我的游戏中,我有一个加速,减慢了一切。 按照timeScale划分deltaTime,让玩家保持正常速度。 除了看起来受timeScale影响的OnTriggerStay2D外,一切都完美无缺。 我以为我可以使用触发器input和触发器退出,把所有的东西都推到每一帧运行的更新函数上,但是这些函数也放慢了速度,我想让玩家的观点保持准确。 那么,有没有办法强制触发器保持,在我改变Time.timeScale后定时进入或退出工作?

在XNA中实现“慢动作”和可变游戏速度最简单的方法是什么?

我有一个XNA 4.0游戏,我希望能够切换到慢动作,然后再回到全速每隔一段时间。 所以如果你杀了一个敌人,游戏就会在爆炸的时候变成慢动作,然后恢复正常。 在XNA 4.0中做这个最简单的方法是什么,而不必改变我现有的所有依赖于GameTime的代码? 我有一些依赖于TotalGameTime的代码,除非让XNA放慢速度,否则这将是错误的。 无论如何避免重构代码? 谢谢!

二维平台游戏中的“时间控制”

我正在制作一个2D玩家可以按下一个button,然后重新开始关卡,只有他们以前的角色也会同时进行关卡游戏,就像他们回来的时候一样。 我知道其他的游戏已经做到了这一点,而我之前想过的做法是让游戏角色有一系列的动作(空闲,跳跃,走路等),然后检测这些动作的变化并logging下来一个列表随着游戏时间。 那么当我需要角色自己再次运行关卡时,我可以在正确的时间通过列表来改变它的行为。 这是做这件事的最好方法吗? 有没有人有这方面的经验? 谢谢。

如何实现游戏时间?

我想知道如何实现游戏的时间旅行。 没有什么超级复杂的东西,只是时间反转,就像Braid里的东西一样,用户可以倒退/快进的时间缩短了30秒。 我在网上search了很多,但我的结果通常指的是使用时间,如“它是3点”或计时器等。 我唯一能想到的就是使用2个数组,一个用于玩家的x位置,另一个用于玩家的y位置,然后遍历这些数组,并将该角色放置在该位置,以便倒退/快进时间。 这能工作吗? 如果可行,arrays的大小应该是多less,我应该多久存一次玩家的x和y? 如果它不起作用,我还能尝试什么? 提前致谢!

如何在游戏中编码时间停止或子弹时间?

我正在开发XNA 4.0中的单人RPG游戏平台游戏。 我想添加一个能让时间停止或减速的能力,只有玩家角色以原来的速度移动(类似于博德之门系列中的时间停止法术)。 我不是在寻找一个确切的实现,而是一些一般的想法和devise模式。 编辑:感谢所有的伟大的投入。 我已经想出了以下解决scheme public void Update(GameTime gameTime) { GameTime newGameTime = new GameTime(gameTime.TotalGameTime, new TimeSpan(gameTime.ElapsedGameTime.Ticks / DESIRED_TIME_MODIFIER)); gameTime = newGameTime; 或者沿着这些线路。 这样我就可以为玩家组件设定不同的时间,其余的则不同。 当然,如果这样的翘曲时间是一个中心因素,那么这个游戏肯定不够普及,但是我希望它能适用于这种情况。 我有点不喜欢这个事实,它抛弃了主要的更新循环,但它肯定是实现它的最简单的方法。 我想这与tesselode的建议是一样的,所以我要给他一个绿色的勾号:)