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

Parameters

matchPosition @param matchPosition Позиция, к которой нам необходимо, чтобы стремилась часть тела.
matchRotation @param matchRotation Поворот, в котором нам необходимо, чтобы была часть тела.
targetBodyPart @param targetBodyPart Часть тела, которая участвует в сопоставлении.
weightMask @param weightMask Структура, которая содержит веса для сопоставления позиции и поворота.
startNormalizedTime @param startNormalizedTime Время начала в пределах анимационного ролика (0 - начало ролика, 1 - конец ролика).
targetNormalizedTime End time within the animation clip (0 - beginning of clip, 1 - end of clip), values greater than 1 can be set to trigger a match after a certain number of loops. Ex: 2.3 means at 30% of 2nd loop.

Description

Автоматически настраивает положение и поворот игрового объекта, так чтобы AvatarTarget достиг matchPosition когда текущее состояние будет в указанном прогрессе.

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 current normalize time and the clip can loop, MatchTarget will adjust the time to match the next clip loop. ex: start time= 0.2 current normalize time = 0.3, start time will be 1.2.

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); } }