使用 Gdscript 使骨骼指向 Godot 中的另一个骨骼

Make bone point towards another bone in Godot using Gdscript

我想旋转骨架中的一根骨骼,使其指向 Godot 中的另一根骨骼。通常,将使用 void look_at ( Vector3 target, Vector3 up ) 方法,但这仅适用于空间,不适用于变换(骨骼使用变换进行操作)。或者,如果没有可以做到这一点的方法,我将如何设置变换的旋转?不是使用 Transform rotated ( Vector3 axis, float phi ) 方法旋转它,有没有办法将旋转设置为与其他骨骼对齐的东西?

您似乎想要 Transform.looking_at,它会 return 一个具有所需方向的新 Transform

var target:Vector3 = get_target()
var up:Vector3 = get_up_vector()
var new_transform = old_transform.looking_at(target, up)

target 向量是 Transform 应该朝向的位置。 upTransform 应该向上的地方。

如果你只有一个 target 向量,你将有无限可能的方向。因为您可以围绕从原点到目标的轴旋转 Transform,它仍会指向该目标。

因此您提供了另一个向量 up(不应与 target 方向相同。理想情况下它与它旋转四分之一),它允许您指定围绕该方向的方向轴.

例如,假设你有一架飞机,你将它指向目标。它是倒着飞的吗?侧身?我们不知道。我们需要指定哪一面朝上。