Version: 2021.3
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%を示します。
completeMatch Allows you to specify what should happen if the MatchTarget function is interrupted. A value of true causes the GameObject to immediately move to the matchPosition if interrupted. A value of false causes the GameObject to stay at its current position if interrupted.


Automatically adjust the GameObject position and rotation.

Adjust the GameObject position and rotation so that the AvatarTarget reaches the matchPosition when the current state is at the specified progress. Target matching only works on the base layer (index 0). You can only queue one match target at a time and you must wait for the first one to finish, otherwise your target matching will be discarded. If you call a MatchTarget with a start time lower than the clip's normalized time and the clip can loop, MatchTarget will adjust the time to match the next clip loop. For example, start time= 0.2 normalized time = 0.3, start time will be 1.2. Animator.applyRootMotion must be enabled for MatchTarget to take effect.

using UnityEngine;

public class TargetMatchingManager : MonoBehaviour { public void MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget target, MatchTargetWeightMask weightMask, float normalisedStartTime, float normalisedEndTime) { var animator = GetComponent<Animator>();

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); } }
Copyright © 2020 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。