在Godot GDscript中翻译电枢中的骨骼

  • 本文关键字:翻译 Godot GDscript godot
  • 更新时间 :
  • 英文 :


我正试图使用t.translated(translateVector)函数在Godot GDscript中更改电枢中骨骼的位置,其中t是一个变换(具有旋转、缩放和位置信息的3x4矩阵(。为了将骨骼移动到特定点,平移向量会提前计算:translateVector = endPosition - currentPosition。问题是currentPosition是Transform,endPosition是Vector3,这些不能相加或相减。有没有办法将Vector3转换为一个变换来减去它们?感谢

你说…

currentPosition是一个Transform,endPosition是Vector3

我不会那样做。如果它是Transform;变换";,而不是";位置";。我提醒您,Transform表示旋转和按比例缩放窗体位置(即使旋转和缩放为零(。为了这个答案的目的;位置";是CCD_ 5。和一个后缀为"的变量;变换";是CCD_ 6。


是否有任何方法将Vector3转换为转换

您从身份转换开始,并将其翻译为:

var endTransform = Transform.IDENTITY.translated(endPosition)

以便减去它们?

没有加法或减法变换这回事。相反,变换合成是通过乘法完成的。Godot中的变换最接近核心库提供的矩阵,它们的组成遵循矩阵规则。因此,相反的合成是用逆变换合成:

var relativeTransform = currentTransform.affine_inverse() * endTransform

然后你可以把它组合成你所拥有的转换:

t * relativeTransform

然而,您可能想要做相反的事情。您可以从变换中获得位置矢量,而不是将矢量转换为变换:

var currentPosition = currentTransform.origin

然后你可以减去矢量:

translateVector = endPosition - currentPosition

并根据您的期望进行翻译:

t.translated(translateVector)

最新更新