Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Часто в играх возникает ситуация, когда персонаж должен двигаться таким образом, чтобы рука или нога приземлились в определенном месте в определенное время. Например, персонажу может понадобиться перепрыгнуть через ступеньки или схватиться за перекладину над головой.

Вы можете использовать функцию Animator.MatchTarget, чтобы справиться с такой ситуацией. Представьте, например, что вы хотите устроить ситуацию, когда персонаж прыгает на платформу, и у вас уже есть анимационный клипданные анимации которые можно использовать для анимированных персонажей или простых анимаций. Это простое «единичное» движение, такое как (один конкретный пример) «Простояние», «Ходьба» или «Бег». Подробнее
См. в Словарь
, где он называется Jump Up. Во-первых, вам нужно найти место в анимационном ролике, в котором персонаж начинает отрываться от земли, обратите внимание, в данном случае это 14,1% или 0,141 в анимационном клипе в нормализованном времени:-

Вам также необходимо найти место в анимационном клипе, где персонаж вот-вот приземлится на ноги, что в данном случае составляет 78,0% или 0,78.

С помощью этой информации вы можете создать скрипт, вызывающий MatchTarget, который можно прикрепить к модели:-

using UnityEngine; using System; [RequireComponent(typeof(Animator))] public class TargetCtrl : MonoBehaviour { protected Animator animator; //the platform object in the scene public Transform jumpTarget = null; void Start () { animator = GetComponent(); } void Update () { if(animator) { if(Input.GetButton("Fire1")) animator.MatchTarget(jumpTarget.position, jumpTarget.rotation, AvatarTarget.LeftFoot, new MatchTargetWeightMask(Vector3.one, 1f), 0.141f, 0.78f); } } }

Сценарий будет перемещать персонажа так, чтобы он прыгал с текущей позиции и приземлялся левой ногой на цель. Имейте в виду, что результат использования MatchTarget, как правило, имеет смысл только в том случае, если он вызывается в нужный момент игрового процесса.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3