【发布时间】:2023-03-04 12:34:01
【问题描述】:
我正在尝试在我的 2d 游戏中构建“模块化”船舶,这意味着一艘船有一个船体、一个引擎、大炮等。每一个都是一个自己的场景。 一艘船可以这样设置
Ship
|- Hull
|- Sprite
|- CollisionShape
|- Engine
|- Sprite
|- CollisionShape
|- ParticleSystem
现在我遇到了以下问题。我将 Ship 节点设置为 KinematicBody2D,因为我使用该节点进行移动。 但是碰撞应该来自子场景(船体,引擎等)。 所以我也制作了 KinematicBodies 并添加了 CollisionShapes。
但这不起作用,因为 Ship 需要一个 CollisionShape 子对象 (KinematicBody2D) 并且它位于嵌套场景(船体、引擎等)中是不够的。此外,如果我使用 move_and_collide/_slide 移动 Ship 节点,则子节点不会发生碰撞。
我不认为我目前的做法是正确的。 通过将子 CollisionShapes 移动到 Ship 上,我可以做些什么来在不破坏模块化的情况下完成此操作?
【问题讨论】:
-
KinematicBody2D无论如何都需要自己的碰撞形状。您能否澄清一下,“模块化”对您的船舶意味着什么。是像国际空间站还是别的什么?所有模块总是一起移动还是可以分开并独立移动? -
对于模块化我的意思是船由不同的部分组成,例如驾驶舱、货舱、发动机等。这些模块应该作为一个整体一起移动。我尝试并取得了一些成功,即为每个部件/模块提供正确的碰撞形状并在加载时重新设置它们。但这并不真正正确......
标签: godot