ゲームの中でしばしば、キャラクターの手や足が決まった場所に特定のタイミングで着地することが発生します。例えば、キャラクターが飛び石をジャンプして越えていく必要があるかもしれないし、頭の上にある柱をつかむ必要があるかもしれません。
You can use the Animator.MatchTarget function to handle this kind of situation. Imagine, for example, you want to arrange a situation where the character jumps onto a platform and you already have an animation clip for it called Jump Up. Firstly, you need to find the place in the animation clip at which the character is beginning to get off the ground, note in this case it is 14.1% or 0.141 into the animation clip in normalized time:
アニメーションクリップの中で、キャラクターが着地する場所を見つけることも必要です。この場合78.0%、または、0.78 です。
With this information, you can create a script that calls MatchTarget which you can attach to the model:
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 を使用するときは、一般的に、ゲームプレイの正しい瞬間に呼び出さないと役立たないことに気を付けてください。