我正在尝试存储儿童游戏对象的相对旋转,以便我可以在需要时计算他们的世界旋转,因为我正在删除那些因为没有用,因为我将旋转从他们的前锋存储到父母的前锋,但它没有似乎工作。
// store relative rotation
var rot = Quaternion.FromToRotation(child.forward, parent.forward);
// get world rotation
var childWorldRot = parent.rotation * rot;
也许有一个更好的解决方案涉及四元数转换,但这很简单,应该这样做:
// store relative directions
var refUp = parent.InverseTransformDirection(child.up);
var refForward = parent.InverseTransformDirection(child.forward);
// get world rotation
var childWorldRot = Quaternion.LookRotation(parent.TransformDirection(refForward), parent.TransformDirection(refUp));
只需使用Transform.localRotation
。它与父母有关。
我不确定我是否完全理解你的最终目标是什么,但请记住,Transform.rotation
已经在世界空间。
// store relative rotation
var rot = child.localRotation;
// get world rotation
var childWorldRot = child.rotation;