Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

Animator.MatchTarget

Declaration

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

Параметры

Параметр Описание
matchPosition Позиция, которую мы хотим, чтобы достигла часть тела.
matchRotation Поворот, в котором мы хотим, чтобы была часть тела.
targetBodyPart Часть тела, которая участвует в матче.
weightMask Структура, содержащая весы для соответствующего положения и вращения.
startNormalizedTime Время начала в клипе анимации (0 — начало клипа, 1 — конец клипа).
targetNormalizedTime Время окончания в клипе анимации (0 — начало клипа, 1 — конец клипа), значения больше 1 могут быть установлены, чтобы вызвать соответствие после определенного количества циклов. Пример: 2.3 означает на 30% второго цикла.
completeMatch Позволяет определить, что должно произойти, если функция MatchTarget будет прервана. Значение true приведет к тому, что GameObject немедленно переместится на matchPosition, если она будет прервана. Значение false приведет к тому, что GameObject останется на своей текущей позиции, если она будет прервана.

Описание

Автоматическая регулировка положения и вращения GameObject.

Настройте положение и вращение GameObject так, чтобы AvatarTarget достиг matchPosition, когда текущее состояние окажется на указанном уровне прогресса. Сопоставление целей работает только на базовом слое (индекс 0). Ставить в очередь можно только одну цель сопоставления за раз, и нужно дождаться завершения первой, иначе ваше сопоставление целей будет отброшено. Если вы вызываете MatchTarget с началом меньше, чем нормализованное время клипа, и клип может повторяться, MatchTarget настроит время, чтобы соответствовать следующему циклу клипа. Например, время начала= 0.2 нормализованное время = 0.3, время начала будет 1.2. Animator.applyRootMotion должны быть включены, чтобы MatchTarget вступил в силу.

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