使用 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
应该朝向的位置。 up
是 Transform
应该向上的地方。
如果你只有一个 target
向量,你将有无限可能的方向。因为您可以围绕从原点到目标的轴旋转 Transform
,它仍会指向该目标。
因此您提供了另一个向量 up
(不应与 target
方向相同。理想情况下它与它旋转四分之一),它允许您指定围绕该方向的方向轴.
例如,假设你有一架飞机,你将它指向目标。它是倒着飞的吗?侧身?我们不知道。我们需要指定哪一面朝上。
我想旋转骨架中的一根骨骼,使其指向 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
应该朝向的位置。 up
是 Transform
应该向上的地方。
如果你只有一个 target
向量,你将有无限可能的方向。因为您可以围绕从原点到目标的轴旋转 Transform
,它仍会指向该目标。
因此您提供了另一个向量 up
(不应与 target
方向相同。理想情况下它与它旋转四分之一),它允许您指定围绕该方向的方向轴.
例如,假设你有一架飞机,你将它指向目标。它是倒着飞的吗?侧身?我们不知道。我们需要指定哪一面朝上。