如何检测 Godot 中的碰撞?

Gab*_*des 10 collision-detection godot

我正在戈多中制作游戏,但我不知道可以使用什么代码来创建死亡平面(一个实体经过并消失或死亡的区域)。

The*_*aot 12

要检测 Godot 中的碰撞,您可以使用碰撞对象,即以下之一:

  • 面积(或二维面积)
  • StaticBody(或 StaticBody2D)
  • 刚体(或 RigidBody2D)
  • KinematicBody(或 KinematicBody2D)

然后你给它一个 CollisionShape (或 CollisionShape2D )或 CollisionPolygon (或 CollisionPolygon2D )作为子项。当然,CollisionShape(或 CollisionShape2D)或 CollisionPolygon(或 CollisionPolygon2D)需要具有已配置的形状。

如果您没有正确设置形状,不仅碰撞对象将不起作用,而且场景树中会出现一个警告图标,告诉您要设置形状。


通常,玩家头像将是 KinematicBody(或 KinematicBody2D),因为它们旨在通过代码移动。

RigidBody(或 RigidBody2D)由物理控制(它反弹等),而 StaticBody(或 StaticBody2D)不移动。

因此,您不想用这些来检测玩家何时进入特定区域。为此,您可以使用 Area(或 Area2D)。


根据放置代码的位置,body_entered当有东西进入和body_exited离开时,Area(或 Area2D)将发出信号。将信号连接到脚本,您可以在其中编写代码来处理这种情况。


顺便说一句,您可以简单地将脚本附加到 KinematicBody(或 KinematicBody2D)并检查_physics_process其垂直坐标,以实现快速而简单的死亡平面功能。