Godot - 从脚本中获取物理 fps?

Godot - Get physics fps from script?

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

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

但是计算每一帧感觉有点浪费保持比它需要的。

您可以从 ProjectSettings 检索物理 FPS:

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

然而,在_physics_process中用speed乘以delta来计算平移是极其常见的。选择一些不寻常的替代方案只会让您的项目更加混乱,只有当您已经确定了与此直接相关的性能瓶颈 时才值得。如果没有,您将陷入 premature optimization trap,浪费时间和顶空优化无关紧要的事情,这意味着您将没有时间优化 做的事情稍后再说。

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

var speed = 500.0 / Engine.iterations_per_second

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

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