MonoBehaviour.OnAnimatorIK(int)
Параметры
| Параметр | Описание |
|---|---|
| layerIndex | Индекс слоя, на котором вызван решающий IK. |
Описание
Обратный вызов для настройки анимации IK (обратная кинематика).
OnAnimatorIK вызывает Animator компонент непосредственно перед тем, как он обновит свою внутреннюю систему IK. В этом обратном вызове удобно задавать положения целей IK и их веса.OnAnimatorIK вызывается только в том случае, если выполнены следующие условия:
- Компонент Animator должен ссылаться на Avatar, настроенный как Гуманоид. Общие или Legacy аватары не поддерживают IK.
- Уровень Контроллера Animator, на котором вы хотите обработать IK, должен иметь включённую опцию IK Pass.
- Компонент Animator должен быть включён и воспроизводить анимацию на GameObject.
- Скрипт, содержащий
OnAnimatorIK, должен быть прикреплен к GameObject с помощью компонента Animator.
Общие виды использования включают:
- Установка положения и вращения IK целей, таких как руки и ноги, для взаимодействия с объектами или достижения целей в окружающей среде.
- Смешивание движения, управляемого анимацией, и движения, управляемого IK, путем настройки весов IK.
- Создание процедурных анимаций, таких как взгляд на цель или прикосновение к объекту.
Дополнительные ресурсы: ,AnimatorController,, ,Avatar,, ,Animator,.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { float leftFootPositionWeight; float leftFootRotationWeight; Transform leftFootObj;
private Animator animator;
void Start() { animator = GetComponent<Animator>(); }
void OnAnimatorIK(int layerIndex) { animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, leftFootPositionWeight); animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, leftFootRotationWeight); animator.SetIKPosition(AvatarIKGoal.LeftFoot, leftFootObj.position); animator.SetIKRotation(AvatarIKGoal.LeftFoot, leftFootObj.rotation); } }
Дополнительные ресурсы: ,Animator.SetIKPosition,, ,Animator.SetIKPositionWeight,, ,Animator.SetIKRotation,, ,Animator.SetIKRotationWeight,.