Unity 旋转父级,使子级的位置与点匹配

问题描述 投票:0回答:1

假设有一个变换称为 P,它的子变换称为 C,世界上有一个随机点称为 K。我想旋转 P,使 C 的位置变得等于或最接近 K。我该怎么做?我搜索了四元数、LookAt、Inverse 等,但没有成功。

c# unity-game-engine quaternions
1个回答
0
投票

假设C一开始就已经在Ks位置,你可以在P和C之间添加一个空物体B,它总是具有P的逆旋转。 B 所需的代码是

// in Update() method
// parent is the transform of P
transform.localRotation = Quaternion.Inverse(parent.localRotation);

如果您希望 C 仍然复制 P 的旋转,您可以在其

Update()
方法中添加类似的行,在其中将 Cs 局部旋转设置为等于 Ps。

最后,如果一般情况下 K 应该不受 Ps 变换的影响,我建议您将 C 作为 P 的子级删除并将其放在层次结构中的旁边。

© www.soinside.com 2019 - 2024. All rights reserved.