goal | 设置的 AvatarIKGoal。 |
goalRotation | 目标在世界空间中的旋转,应遵循 Unity 的世界坐标约定(见下文)。 |
设置 IK 目标的旋转。
IK 目标是针对特定身体部位指定的目标位置和旋转。Unity 计算如何从起始点将身体部位移动到该目标。例如,此起始点可以是从动画获得的当前位置和旋转。
此函数在世界空间中设置 IK 目标旋转。指定 IK 目标旋转时,应遵循 Unity 的世界坐标约定:• X 轴
与手掌(或脚底)平行,指向手(或脚)的右侧。
• Y 轴
垂直于手的顶部(或脚),指向向上。
• Z 轴
与手掌(或脚底)平行,指向手指(或脚趾)的方向。
建议头像骨骼姿势的骨骼方向也应遵循 Unity 的世界坐标约定。如果您的头像骨骼姿势遵循不同的约定,则应用于相应 GameObject
的骨骼旋转可能与 IK 目标旋转不同。
此外,您可以设置权重值以设置 IK 目标旋转对起始旋转的影响程度。使用 SetIKRotationWeight
方法设置 0..1 之间的权重值,其中权重为 0 表示没有影响,权重为 1 表示完全影响。
以下代码示例演示了如何使用 SetIKRotation
方法和 SetIKRotationWeight
方法。
using UnityEngine;
public class Example : MonoBehaviour { Transform objToAimAt; Animator animator;
void Start() { animator = GetComponent<Animator>(); }
void OnAnimatorIK(int layerIndex) { Quaternion handRotation = Quaternion.LookRotation(objToAimAt.position - transform.position); animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1.0f); animator.SetIKRotation(AvatarIKGoal.RightHand, handRotation); } }