ゲームの中でしばしば、キャラクターの手や足が決まった場所に特定のタイミングで着地することが発生します。例えば、キャラクターが飛び石をジャンプする、またはジャンプして頭の上にある柱をつかむことが必要な場合があります。
このような状況を処理するために、Animator.MatchTarget 関数 を使用します。例えば、キャラクターがプラットフォームに飛び乗る状況をアレンジしたいとします。そのために Jump Up という名前のアニメーションクリップがすでに用意されているとします。まず、アニメーションクリップの中で、キャラクターが地面から離れ始める場所を見つける必要があります。この場合、正規化された時間では、アニメーションクリップの 14.1% または 0.141 になります。
アニメーションクリップの中で、キャラクターが着地する場所を見つけることも必要です。この場合78.0%、または、0.78 です。
この情報をもとに、MatchTarget を呼び出すスクリプトを作成し、モデルに設定します。
using UnityEngine;
using System;
[RequireComponent(typeof(Animator))]
public class TargetCtrl : MonoBehaviour {
protected Animator animator;
//the platform object in the scene
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);
}
}
}
上記のスクリプトによって、キャラクターは現在の場所からジャンプして目的の地点に左足で着地します。MatchTarget を使用するときは、一般的に、ゲームの正しい瞬間に呼び出さないと役立たないことに気を付けてください。