Unity - как быстро перейти к проценту анимации?
Хорошо, я посмотрел все, что связано с Unity Animator, и я знаю, что вы можете перейти к определенным кадрам и получить процент анимации с помощью https://answers.unity.com/questions/1418940/how-can-i-know-a-percent-of-animation.html и https://answers.unity.com/questions/181903/jump-to-a-specific-frame-in-an-animation.html
Однако я ничего не видел по этому поводу - как и в игре Causality (сделанной с Unity), мне нужно сделать что-то похожее на Magic leap с сайтом на свитке: https://www.magicleap.com/
У меня есть анимация, которую я создаю для своей модели в Blender, и вместо того, чтобы ее запускать, мне нужно быстро перейти вперед / перейти к определенному проценту анимации в зависимости от положения ее оси y.
Прямо сейчас я могу перетащить мою модель вверх / вниз по оси Y, и у меня есть максимум и минимум transform.position.y
что модель может двигаться дальше (как тележка)
Vector3 goTo = new Vector3 (transform.position.x, (initObjPos.y+touchDiff), transform.position.z);
if (goTo.y >= maxHeight) { //max = 0.251f in y, and min?
transform.position = new Vector3 (transform.position.x, maxHeight, transform.position.z);
} else if (goTo.y <= minHeight) {
transform.position = new Vector3 (transform.position.x, minHeight, transform.position.z);
} else { //lower
transform.position = goTo;
}
Вот визуализация того, как мне нужно, чтобы анимация была завершена на 100%, когда y-позиция на максимуме, и на 0% на минимальной высоте, и чтобы я мог двигаться вперед и назад, когда пользователь перетаскивает:
Это вообще возможно?
1 ответ
Для каждого состояния в аниматоре есть переключатель для normalizedTime
через параметр с плавающей точкой. Как следует из названия, установка его значения на 0 даст анимацию на 0% и 1 на 100%. Вы можете установить значение параметра через
animator.SetFloat ("AnimStateTime", 0.5f);
если вы хотите сгладить переход, используйте
animator.SetFloat ("AnimStateTime", 0.5f, 1, 10 * Time.deltaTime);