【发布时间】:2018-11-21 03:55:24
【问题描述】:
假设您有多个区域,当一个区域重叠时,您希望脚本获取重叠节点的节点路径。简而言之,如何获得重叠节点的节点路径。谢谢
【问题讨论】:
标签: game-engine collision game-physics godot gdscript
假设您有多个区域,当一个区域重叠时,您希望脚本获取重叠节点的节点路径。简而言之,如何获得重叠节点的节点路径。谢谢
【问题讨论】:
标签: game-engine collision game-physics godot gdscript
我相信您在区域 (area_entered) 中处理了一个信号,它将发送与您重叠的区域对象。所以你直接得到那个节点,不需要get_node(nodepath)。
【讨论】:
当您通过 Inspector 从节点信号选项卡连接 area_entered 事件时,_on_AreaNodeName_area_entered(area): 方法将出现在您的脚本中。当某些东西进入您小时候拥有的 CollisionShape 时,它将激活,并且该方法的 (area) 部分代表进入该空间的任何对象。因此,您可以使用get_path() 方法通过area.get_path() 找到该对象的路径。
为了演示,我制作了一个 2D 示例,其中包含两个带有基本精灵和碰撞形状的 Area2D 节点(AreaGreen 和 AreaRed),并给其中一个标签以显示进入该区域的任何节点的路径:
Nodes used in Area Detection Example
我给了AreaGreen节点简单的水平移动,然后将area_entered信号连接到AreaRed节点并编写了这个脚本:
extends Area2D
func _on_AreaRed_area_entered(area):
$Label.text = area.get_path()
pass
简单地将标签文本更改为相交节点的路径。结果如下:
如您所见,脚本成功找到了节点路径。
【讨论】: