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. |
Автоматически настраивает положение и поворот игрового объекта, так чтобы 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); } }