【问题标题】:How do I detect collision in Godot?如何检测 Godot 中的碰撞?
【发布时间】:2021-06-28 13:05:13
【问题描述】:

我正在用 Godot 制作游戏,但我不知道我可以为死亡平面(一个实体穿过并消失或死亡的区域)使用什么代码。

【问题讨论】:

  • 听起来你想要的是一个Area/Area2D 使用它的body_entered 信号

标签: collision-detection godot


【解决方案1】:

要检测 Godot 中的碰撞,您可以使用碰撞对象,这是其中之一:

  • 面积(或 Area2D)
  • StaticBody(或 StaticBody2D)
  • 刚体(或刚体2D)
  • KinematicBody(或 KinematicBody2D)

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

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


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

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

因此,这些都不是您想要用来检测玩家何时进入特定区域的东西。为此,您使用 Area(或 Area2D)。


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


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

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多