版本: Unity 6 (6000.0)
语言英语
  • C#

Animator.SetIKRotation

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void SetIKRotation(AvatarIKGoal goal, Quaternion goalRotation);

参数

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); } }

其他资源:SetIKRotationWeightSetIKPosition