layerIndex | IK ソルバーが呼び出しされたレイヤーのインデックス |
アニメーション IK (インバース キネマティクス)をセットアップするときのコールバック
OnAnimatorIK() は Animator コンポーネントが内部 IK システムを更新する直前により呼び出しされます。このコールバックは IK Goal のポジションおよび関連する Weight(重み付け) を設定するために使用することが出来ます。
var leftFootPositionWeight: float; var leftFootRotationWeight: float; var leftFootObj: Transform; private var animator: Animator; function Start() { animator = GetComponent.<Animator>(); } function OnAnimatorIK(layerIndex: int) { animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot,leftFootPositionWeight); animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot,leftFootRotationWeight); animator.SetIKPosition(AvatarIKGoal.LeftFoot,leftFootObj.position); animator.SetIKRotation(AvatarIKGoal.LeftFoot,leftFootObj.rotation); }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public float leftFootPositionWeight; public float leftFootRotationWeight; public 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); } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): public leftFootPositionWeight as float public leftFootRotationWeight as float public leftFootObj as Transform private animator as Animator def Start() as void: animator = GetComponent[of Animator]() def OnAnimatorIK(layerIndex as int) as void: animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, leftFootPositionWeight) animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, leftFootRotationWeight) animator.SetIKPosition(AvatarIKGoal.LeftFoot, leftFootObj.position) animator.SetIKRotation(AvatarIKGoal.LeftFoot, leftFootObj.rotation)