如何通过 gdscript 在移动墙(StaticBody2D)上连接二维飞镖(Kinematicbody2D)

How to Pinjoint2D darts(Kinematicbody2D) on moving wall(StaticBody2D) via gdscript

我有一个射击飞镖 (KinematicBody2D) 需要粘在移动的墙上 (staticbody2D)。 我想让飞镖贴在墙上,根据墙的移动改变位置(目前我的墙是通过更新位置移动的)。

然而,飞镖并没有完全跟随墙的移动路径。

我最终添加了 pinJoint2D,但是通过 gdscript 设置节点只会给我一个错误

Invalid set index 'node_b' (on base: 'PinJoint2D') with value of type 'StaticBody2D (StaticBody2DWall.gd)'.

我在 dart 节点中设置 pinjoint2d 的代码如下:

var slide_count = get_slide_count()
if slide_count:
    var collision = get_slide_collision(slide_count - 1)
    var collider = collision.collider
    lif collider.is_in_group("wall"):
        $PinJoint2D.node_b = collider

任何人都请帮忙。如果有更好的做法,请告诉我。

node_b成员是节点路径,不是节点。请尝试以下操作:

$PinJoint2D.node_b = collider.get_path()