ゲームの中でしばしば、キャラクターの手や足が決まった場所に特定のタイミングで着地することが発生します。例えば、キャラクターが飛び石をジャンプしたり、頭の上にある柱をつかむなど、です。
このような状況を処理するために、Animator.MatchTarget 関数 を使用します。例えば、キャラクターがプラットフォームに飛び乗る状況をアレンジしたいとします。そのために Jump Up という名前のアニメーションクリップがすでに用意されているとします。まず、アニメーションクリップの中で、キャラクターが地面から離れ始める場所を見つける必要があります。この場合、正規化された時間では、アニメーションクリップの 14.1% または 0.141 になります。
アニメーションクリップの中で、キャラクターが着地する場所を見つけることも必要です。この場合78.0%、または、0.78 です。
この情報をもとに、モデルに設定する MatchTarget を呼び出すスクリプトを作成し、モデルに添付します。
using UnityEngine;
を使用しています。
[RequireComponent(typeof(Animator))] を使用する。
public class TargetCtrl : MonoBehaviour { (ターゲットコントロール)
protected Animator animator;
//シーン内のプラットフォームオブジェクト
public Transform jumpTarget = null;
void Start () {
animator = GetComponent<Animator>();
void Update () {
if(animator) {
if(Input.GetButton("Fire1"))の場合
animator.MatchTarget(jumpTarget.position, jumpTarget.rotation, AvatarTarget.LeftFoot,
new MatchTargetWeightMask(Vector3.one, 1f), 0.141f, 0.78f);
}
}
}</Animator>
上記のスクリプトによって、キャラクターは現在の場所からジャンプして目的の地点に左足で着地します。MatchTarget を使用するときは、一般的に、ゲームの正しい瞬間に呼び出さないと役立たないことに気を付けてください。