【问题标题】:GdScript get node path on collisionGdScript 获取碰撞时的节点路径
【发布时间】:2018-11-21 03:55:24
【问题描述】:

假设您有多个区域,当一个区域重叠时,您希望脚本获取重叠节点的节点路径。简而言之,如何获得重叠节点的节点路径。谢谢

【问题讨论】:

    标签: game-engine collision game-physics godot gdscript


    【解决方案1】:

    我相信您在区域 (area_entered) 中处理了一个信号,它将发送与您重叠的区域对象。所以你直接得到那个节点,不需要get_node(nodepath)。

    area2d

    【讨论】:

      【解决方案2】:

      当您通过 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
      

      简单地将标签文本更改为相交节点的路径。结果如下:

      Before the Areas collide

      After the Areas collide

      如您所见,脚本成功找到了节点路径。

      【讨论】:

        猜你喜欢
        • 2021-07-05
        • 2012-09-05
        • 2022-01-09
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多