C# 计算LookAt而不应用它

C# 计算LookAt而不应用它,c#,unity3d,C#,Unity3d,我需要在使用LookAt时夹紧骨骼的旋转 LookAt功能工作得很好,但它不提供任何夹紧的可能性,而且据我所知,LookAt没有提供一种方法,可以看到结果旋转而无需 不将其应用于变换 因此,我想知道是否可以先计算LookAt的结果而不首先应用它。只需应用LookAt,查看结果,然后夹紧结果,应用最终旋转 在帧期间应用中间变换(更新函数或类似函数)并不少见。重要的是,在Update(或LateUpdate或FixedUpdate)结束时,将变换功能设置为所需的变换。只需应用LookAt,查看结果,

我需要在使用
LookAt
时夹紧骨骼的旋转

LookAt
功能工作得很好,但它不提供任何夹紧的可能性,而且据我所知,
LookAt
没有提供一种方法,可以看到结果旋转而无需 不将其应用于变换


因此,我想知道是否可以先计算
LookAt
的结果而不首先应用它。

只需应用
LookAt
,查看结果,然后夹紧结果,应用最终旋转


在帧期间应用中间变换(更新函数或类似函数)并不少见。重要的是,在
Update
(或
LateUpdate
FixedUpdate
)结束时,将变换功能设置为所需的变换。

只需应用
LookAt
,查看结果,然后夹紧结果,应用最终旋转


在帧期间应用中间变换(更新函数或类似函数)并不少见。重要的是,在
Update
(或
LateUpdate
FixedUpdate
)结束时,函数将转换为所需的方向向量。

计算所需的方向向量:

Vector3 direction = bone.transform.position - targetTransform.position;
使用Quaternion.LookAt计算所需的旋转:

Quaternion newRotation = Quaternion.LookAt(direction);
现在,对提供的旋转执行您想要执行的任何数学运算,例如,如果您只想每秒最多旋转骨骼10度,您可以执行以下操作:

newRotation = Quaternion.RotateTowards(bone.transform.rotation, newRotation, 10f * time.deltaTime);
最后,将旋转应用于骨骼:

bone.rotation = newRotation;

计算所需的方向向量:

Vector3 direction = bone.transform.position - targetTransform.position;
使用Quaternion.LookAt计算所需的旋转:

Quaternion newRotation = Quaternion.LookAt(direction);
现在,对提供的旋转执行您想要执行的任何数学运算,例如,如果您只想每秒最多旋转骨骼10度,您可以执行以下操作:

newRotation = Quaternion.RotateTowards(bone.transform.rotation, newRotation, 10f * time.deltaTime);
最后,将旋转应用于骨骼:

bone.rotation = newRotation;

我必须在最新的更新中完成这一切。我真的希望避免仅仅为了看它的外观而应用它。@tMight我不理解你不愿意应用中间转换。您在
LateUpdate
中使用它,而不是在
Update
中使用它,这在这方面没有什么区别。你能详细解释一下为什么你认为应用转换是不好的吗?那将是很大的开销。Unity将不得不重新计算/更新许多内容,占用宝贵的时间。我希望现在还不能接受你的答案。我真的很想知道是否有可能在应用它之前计算出结果。首先,你可以自行决定接受或不接受任何答案。其次,Unity在
LateUpdate
函数完成之前不会重新计算或更新任何内容,因此,唯一重要的是函数末尾的转换值。我想我已经可以分析第二行的结果了。你的评论是否意味着我只能在下一帧中分析结果?我必须在最新更新中完成所有这些。我真的希望避免仅仅为了看它的外观而应用它。@tMight我不理解你不愿意应用中间转换。您在
LateUpdate
中使用它,而不是在
Update
中使用它,这在这方面没有什么区别。你能详细解释一下为什么你认为应用转换是不好的吗?那将是很大的开销。Unity将不得不重新计算/更新许多内容,占用宝贵的时间。我希望现在还不能接受你的答案。我真的很想知道是否有可能在应用它之前计算出结果。首先,你可以自行决定接受或不接受任何答案。其次,Unity在
LateUpdate
函数完成之前不会重新计算或更新任何内容,因此,唯一重要的是函数末尾的转换值。我想我已经可以分析第二行的结果了。你的评论是否意味着我只能在下一帧中分析结果?