戈多 - 从脚本中获取物理 fps?



所以我想设置一个以像素每秒为单位的速度,然后计算移动该特定物理帧的速度。 像const speed = 500 / get_physics_fps()这样的事情,我实际上可以做:

func _physics_process(delta):
var speed = 500 * delta

但是计算我们知道不会改变的每一帧感觉有点浪费,我也可以除以 60 或任何我设置的物理 fps,但这比它需要的更难维护。

您要查找的属性是Engine.iterations_per_second,可以在运行时读取和写入:

var speed = 500.0 / Engine.iterations_per_second

或者,您可以通过ProjectSettings.get_setting()读取任何项目设置,但请记住,在运行时修改项目设置不会执行任何操作,并且在运行时读取它们不会反映自引擎初始化以来可能发生的任何更改,因此除非绝对必要,否则我建议不要这样做。

也就是说,我强烈建议您坚持使用 delta 方法,部分原因是尝试对速度进行硬编码是非常多余的过早优化,部分原因是这是标准做法,部分原因是乘以 delta 可以让您使用Engine.time_scale来实现慢动作之类的东西,而不必跳过噩梦般的特殊情况代码。

您可以从项目设置中检索物理 FPS:

var fps = ProjectSettings.get_setting("physics/common/physics_fps")

但是,通过将speed乘以delta来计算翻译是极其常见的_physics_process.选择一些不寻常的替代方案只会使您的项目更加混乱,并且只有在您已经确定与此直接相关的性能瓶颈时才值得。如果你没有,你就陷入了过早的优化陷阱,浪费时间和空间来优化无关紧要的事情,这意味着你将没有时间优化以后重要的事情。

最新更新