是什么减慢了 RigidBody 的速度?
What is slowing down RigidBody?
我创建了一个非常简单的场景,其中只有一个 RigidBody。
我的全部代码如下:
extends RigidBody
func _ready():
self.apply_central_impulse(Vector3(1, 0, 0))
self.gravity_scale = 0
self.linear_damp = 0
self.friction = 0
func _integrate_forces(state):
print("v", self.linear_velocity)
唯一发生的事情是开始时的单一力脉冲。
我当时预计会发生的是(在没有重力、阻尼和摩擦的情况下)它会保持恒定速度(因为没有其他力作用在它上面)。
然而我观察到的是 linear_velocity 不断变小。
IE。输出是:
--- Debugging process started ---
Godot Engine v3.4.4.stable.official.419e713a2 - https://godotengine.org
OpenGL ES 3.0 Renderer: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2
OpenGL ES Batching: ON
v(1, 0, 0)
v(0.998333, 0, 0)
v(0.996669, 0, 0)
v(0.995008, 0, 0)
v(0.99335, 0, 0)
v(0.991694, 0, 0)
v(0.990042, 0, 0)
v(0.988392, 0, 0)
v(0.986744, 0, 0)
v(0.9851, 0, 0)
是什么导致我的 RigidBody 变慢?
P.S。这是从 Godot 问答 https://godotengine.org/qa/133003/what-is-slowing-down-rigidbody 交叉发布的,无论哪个地方先得到答案,我都会尽量记得更新另一个。
项目设置 -> 常规 -> 物理 -> 3D -> 默认线性阻尼中有线性阻尼配置。它正在应用于您的 RigidBody
。如果将默认线性阻尼设置为零,减速效果就会消失。
这似乎也是 Bullet 和 GodotPhysics 之间的区别,因为切换到 GodotPhysics 也会使减速效果消失。
是的,这违反了文档,因为根据它,您必须将线性阻尼设置为 -1 才能获得默认阻尼。
因此,您可以认为这是一个错误,请随时在 https://github.com/godotengine/godot/issues 上打开错误报告 - 我已经看到了其他此类错误,其中 GodotPhysics 的工作方式与广告相同,但 Bullet(或其与 Godot 的集成) ) 有一些怪癖。
编辑:实际上,关于Bullet 和dampening 的bug 好像已经打开了:
我创建了一个非常简单的场景,其中只有一个 RigidBody。 我的全部代码如下:
extends RigidBody
func _ready():
self.apply_central_impulse(Vector3(1, 0, 0))
self.gravity_scale = 0
self.linear_damp = 0
self.friction = 0
func _integrate_forces(state):
print("v", self.linear_velocity)
唯一发生的事情是开始时的单一力脉冲。
我当时预计会发生的是(在没有重力、阻尼和摩擦的情况下)它会保持恒定速度(因为没有其他力作用在它上面)。
然而我观察到的是 linear_velocity 不断变小。 IE。输出是:
--- Debugging process started ---
Godot Engine v3.4.4.stable.official.419e713a2 - https://godotengine.org
OpenGL ES 3.0 Renderer: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2
OpenGL ES Batching: ON
v(1, 0, 0)
v(0.998333, 0, 0)
v(0.996669, 0, 0)
v(0.995008, 0, 0)
v(0.99335, 0, 0)
v(0.991694, 0, 0)
v(0.990042, 0, 0)
v(0.988392, 0, 0)
v(0.986744, 0, 0)
v(0.9851, 0, 0)
是什么导致我的 RigidBody 变慢?
P.S。这是从 Godot 问答 https://godotengine.org/qa/133003/what-is-slowing-down-rigidbody 交叉发布的,无论哪个地方先得到答案,我都会尽量记得更新另一个。
项目设置 -> 常规 -> 物理 -> 3D -> 默认线性阻尼中有线性阻尼配置。它正在应用于您的 RigidBody
。如果将默认线性阻尼设置为零,减速效果就会消失。
这似乎也是 Bullet 和 GodotPhysics 之间的区别,因为切换到 GodotPhysics 也会使减速效果消失。
是的,这违反了文档,因为根据它,您必须将线性阻尼设置为 -1 才能获得默认阻尼。
因此,您可以认为这是一个错误,请随时在 https://github.com/godotengine/godot/issues 上打开错误报告 - 我已经看到了其他此类错误,其中 GodotPhysics 的工作方式与广告相同,但 Bullet(或其与 Godot 的集成) ) 有一些怪癖。
编辑:实际上,关于Bullet 和dampening 的bug 好像已经打开了: