是否可以更改 GODOT 中物理计算的方式?
Is it possible to change the way physics is computed in GODOT?
我有一个简单的益智游戏的想法,玩家可以在其中控制基本的物理定律和公式。然而,要实现这一点,我需要以某种方式覆盖 GODOT 的物理学。我自己可以弄清楚如何为此制作播放器界面,但我首先需要看看我是否真的可以改变物理。例如:是否可以更改
acceleration = Force/mass
至
acceleration = Force * mass
?
有两种方法。您可以从 KinematicBody
构建或自定义 RigidBody
.
使用KinematicBody
你可以随心所欲地书写乐章。写在_physics_process
里就行了。您可以使用 move_and_collide
来处理碰撞,其中 returns 一个 KinematicCollision
对象,您可以在其中获取碰撞信息,从而允许您编写自己的碰撞解决方案。
使用 RigidBody
,我建议将 custom_integrator
设置为 true 并覆盖在物理过程中调用的 _integrate_forces
,并使用 PhysicsDirectBodyState
允许您读写物理对象的状态。
无论采用哪种方法,对于您想要的修改,您都必须自己跟踪加速度,并设置速度。 RigidBody
可以为您跟踪力,或者您可以自己做。无论如何,您都将编写您的物理集成步骤。
知道不同的物理节点(包括joins/constraints)都在幕后使用PhysicsServer
api。如果你愿意,你可以直接调用它(这可能是为了优化你的代码,或者做一些节点不提供开箱即用的事情)。
附录 对于寻找如何在 Godot 中使用 PhysicsServer
的任何人,请参阅:
其实那些都在用Physics2DServer
,不过也算是个不错的参考吧
理论上,可以为 Godot 提供您自己的物理引擎(因为它目前附带两个供您选择)。我还没有看到有关如何执行此操作的文档。我只确定您将从源代码构建(这并不难)。
我还想提一下,Godot 物理学正在为 Godot 4.0 进行重写(它可能不会再附带两个)。 Godot 4.1 预计会有一个新的 API 来为 PhysicsServer
提供后端(所以插入你自己的物理引擎将不再是黑暗的艺术,我们可以期待第三方物理引擎是某时某事)。
附录:实际上还有另一种方法。使用 Godex,并使用其实体-组件-系统架构编写您的物理学。
我有一个简单的益智游戏的想法,玩家可以在其中控制基本的物理定律和公式。然而,要实现这一点,我需要以某种方式覆盖 GODOT 的物理学。我自己可以弄清楚如何为此制作播放器界面,但我首先需要看看我是否真的可以改变物理。例如:是否可以更改
acceleration = Force/mass
至
acceleration = Force * mass
?
有两种方法。您可以从 KinematicBody
构建或自定义 RigidBody
.
使用KinematicBody
你可以随心所欲地书写乐章。写在_physics_process
里就行了。您可以使用 move_and_collide
来处理碰撞,其中 returns 一个 KinematicCollision
对象,您可以在其中获取碰撞信息,从而允许您编写自己的碰撞解决方案。
使用 RigidBody
,我建议将 custom_integrator
设置为 true 并覆盖在物理过程中调用的 _integrate_forces
,并使用 PhysicsDirectBodyState
允许您读写物理对象的状态。
无论采用哪种方法,对于您想要的修改,您都必须自己跟踪加速度,并设置速度。 RigidBody
可以为您跟踪力,或者您可以自己做。无论如何,您都将编写您的物理集成步骤。
知道不同的物理节点(包括joins/constraints)都在幕后使用PhysicsServer
api。如果你愿意,你可以直接调用它(这可能是为了优化你的代码,或者做一些节点不提供开箱即用的事情)。
附录 对于寻找如何在 Godot 中使用 PhysicsServer
的任何人,请参阅:
其实那些都在用Physics2DServer
,不过也算是个不错的参考吧
理论上,可以为 Godot 提供您自己的物理引擎(因为它目前附带两个供您选择)。我还没有看到有关如何执行此操作的文档。我只确定您将从源代码构建(这并不难)。
我还想提一下,Godot 物理学正在为 Godot 4.0 进行重写(它可能不会再附带两个)。 Godot 4.1 预计会有一个新的 API 来为 PhysicsServer
提供后端(所以插入你自己的物理引擎将不再是黑暗的艺术,我们可以期待第三方物理引擎是某时某事)。
附录:实际上还有另一种方法。使用 Godex,并使用其实体-组件-系统架构编写您的物理学。