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

Parámetros

matchPositionLa posición que queremos que la parte del cuerpo alcance.
matchRotationLa rotación en la que queremos que la parte del cuerpo esté.
targetBodyPartLa parte del cuerpo que está involucrada en la coincidencia.
weightMaskEstructura que contiene los pesos para las posiciones y rotaciones que coinciden.
startNormalizedTimeTiempo inicial dentro del clip de animación (0 - al principio del clip, 1 - al final del clip).
targetNormalizedTimeEl tiempo de finalización dentro del clip de animación (0 - principio del clip, 1 - final del clip), se pueden establecer valores mayores que 1 para activar una coincidencia después de cierto número de loops (bucles). Ejemplo: 2.3 significa al 30% del 2do loop.

Descripción

Ajusta automáticamente la posición y la rotación del gameobject para que el AvatarTarget alcance la posición de coincidencia cuando el estado actual esté en el progreso especificado.

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