matchPosition | ボディパーツが到達してほしい位置 |
matchRotation | ボディパーツが到達してほしい回転位置(Rotation) |
targetBodyPart | マッチングに関連するボディパーツ |
weightMask | 位置や回転のマッチングに使用するウェイトの構造( Structure ) |
startNormalizedTime | アニメーションクリップの開始時間( 0 - クリップの開始位置、1 - クリップの終了位置) |
targetNormalizedTime | アニメーションクリップの終了時間( 0 - クリップの開始位置、1 - クリップの終了位置)、1 より大きい値により特定のループ回数の後、マッチングをトリガーさせることができます。例: 2.3 は 2 回目のループの 30%を示します。 |
ゲームオブジェクト位置および回転を自動的に調整して、現在のステータスが指定された状態となったときに AvatarTarget が matchPosition に到達するようにします。
ターゲットマッチングはベースレイヤー( index 0 )でのみ動作します。 一度にひとつのマッチターゲットをキューに積むことができ、最初の1回目の再生が終了するまで待つ必要があります。でなければ、ターゲットマッチングは破棄されます。 クリップの正規化された現在の時間の値よりも低い値の開始時間で MatchTarget を呼び出す、かつループさせることができる場合、MatchTarget は、次のクリップの再生開始と一致するように時間を調整します。例:開始時間が0.2、正規化された現在の時間が0.3であれば、開始時間は 1.2 となります。
using UnityEngine;
public class TargetMatchingManager : MonoBehaviour { public void MatchTarget (Vector3 matchPosition, Quaternion matchRotation, AvatarTarget target, MatchTargetWeightMask weightMask, float normalisedStartTime, float normalisedEndTime) { if (animator.isMatchingTarget) return;
float normalizeTime = Mathf.Repeat(animator.GetCurrentAnimatorStateInfo(0).normalizedTime, 1f);
if (normalizeTime > normalisedEndTime) return;
animator.MatchTarget (matchPosition, matchRotation, target, weightMask, normalisedStartTime, normalisedEndTime); } }