Version: 5.4 (switch to 5.5b)
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.



public function MatchTarget(matchPosition: Vector3, matchRotation: Quaternion, targetBodyPart: AvatarTarget, weightMask: MatchTargetWeightMask, startNormalizedTime: float, targetNormalizedTime: float = 1): void;
public void MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime, float targetNormalizedTime = 1);


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 となります。

no example available in JavaScript
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); } }