我正在使用 Unity 2021 创建一个太阳系模拟器。 Unity timeScale 默认为 1,实时转换为 1 秒。编辑器中的上限为 100,这意味着实时 1 秒等于模拟中的 100 秒。
现在你可以想象这个上限对于“空间”模拟来说太低了。 有没有人有关于如何规避此上限的方法或建议?
我了解 Unity Time API 的工作原理,但我似乎没有找到实现此目的的方法。
所需结果的一个很好的例子是 Universe sandbox 中的 timeScale,如果我没记错的话,它是在 Unity 中开发的。
谢谢!
实现此目的的一种方法是《坎巴拉太空计划》处理高达 100,000 倍的时间扭曲的方式,即计算航天器在指定时间后应位于的位置,而不是在每个游戏帧中进行计算(如图所示) 这里)。这种方法不会让航天器受到大气阻力等复杂的物理力作用,但它可以准确模拟航天器在太空旅行过程中所经历的可预测轨迹。
要完全回答您的问题,您需要提供更多详细信息。您使用手工方程式吗?您是否使用具有预设值的动画师?您在哪里以及如何使用时间刻度? 假设您正在谈论动画,解决方案很简单 - 只需在动画中进一步推进帧即可。很难解释,所以我举个例子: 假设在 1 帧动画中,木星要移动 100 个单位的径向距离。不要移动 100 个单位,而是在 X10 时间尺度上移动 1000 个单位,或者在 100X 时间尺度上移动 10,000 个单位。
假设您正在使用物理方程,您将在某处乘以 deltaTime。当您这样做时,您可以将 deltaTime 乘以另一个因子,只要您在整个系统中保持一致即可。我建议创建一个 TimeUtil 类,它将处理乘法,这样你就不会在该类之外使用 time.deltaTime 。