Godot-在不破坏物理性能的情况下加快游戏速度

问题描述

我正在制作一款足球模拟游戏,为此,我将普通的2DBody节点用于球员和球。但是我希望能够加快游戏速度,而又不破坏物理原理并获得其他结果。

为加快游戏速度,我发现 Engine.time_scale Engine.iterations_per_second 影响游戏速度。

因此,时间刻度的认值= 1,迭代次数/秒的认值= 60

仅通过设置 time_scale = 0.5 ,物理似乎就破裂了。至少我可以看到,它看起来不如正常速度自然。

通过设置 time_scale = 0.5 每秒迭代次数= 120来加速时, 所以物理似乎没有破裂。 但是我不能真正确定这是否是100%正确。 (也可以99%接受;-))

那么有人知道另一种加快游戏速度的方法而又不会破坏物理性吗?或者可以确认,修改的time_scale和每秒迭代次数不会破坏物理性吗? >

解决方法

首先,Godot文档说:

float time_scale-控制游戏中时钟滴答声相对于真实时钟滴答声的快慢。默认为1.0。值为2.0表示游戏的移动速度是现实生活的两倍,而值为0.5表示游戏的移动速度为正常速度的一半。

因此,如果您想加快游戏时间,应该增加该值,而不是减少。据我了解,此值将影响将delta传递给_physics_process(delta)方法(以及其他引擎内部物理计算)的时间,而time_scale充当该值的多人游戏。 / p>

物理引擎以固定的时间步长运行,因此iterations_per_second将对其产生影响,如文档所述:

int iterations_per_second-每秒的固定迭代次数(用于固定过程和物理)。

是的,同时修改两个值应该会带来更好的结果,因为增加iterations_per_second可以使物理计算更加频繁,也就意味着更精确(我们称其为“时间细节”)。还能“打破物理学”吗?是的,如果物理计算的速度不足以跟上引擎的迭代频率。在这种情况下,唯一的解决方案就是优化游戏。