Godot如何以编程方式获取碰撞对象的碰撞层?

Godot how to get collision layer of colliding objects programmatically?

我有3个碰撞层:

  1. 玩家
  2. 硬币
  3. 敌人

我的节点碰撞良好,但是当我的玩家与硬币或敌人碰撞时,我无法区分它们两者。通常我会通过设置碰撞组来做到这一点,但如果图层已经设置好,检查图层可能更容易。

使用组的可能解决方案

func _on_Player_area_entered(area):
  if area.is_in_group('enemies'):
    pass
  if area.is_in_group('coins'):
    pass

当 Coin 和 Enemy 与 Player 发生碰撞时,如何以编程方式获取它们的碰撞层?

我认为最好的方法就是按照您的建议进行操作:将硬币和敌人放在它们自己的节点组中,然后 is_in_group 检查您的碰撞代码。

如果您想避免节点组,实现此目的的另一种方法是在您的玩家场景中创建一个单独的 Area2D 节点,该节点只会与硬币碰撞,而另一个 Area2D 与敌人碰撞。