Godot如何以编程方式获取碰撞对象的碰撞层?
Godot how to get collision layer of colliding objects programmatically?
我有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
与敌人碰撞。
我有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
与敌人碰撞。