Не получается снизить скорость анимации
Пытаюсь снизить анимацию, никак не понимаю, как сделать чтобы она останавливалась не сразу а повремени: Запускаю анимацию:
void Start()
анимация крутится без остановки, начинаю снижать скорость:
void FixedUpdate() < if(Input.GetKey(KeyCode.LeftArrow)) < anim["name"].speed-=5; >>
Начинает смесь какая-то, то быстро, то медленно.
Как правильно менять скорость анимации? Анимация имеет тип Loop , при этом крутится постоянно, как нужно, если поменять на другие типы, или по умолчанию, анимация проигрывается 1 раз и останавливается.
Как управлять скоростью анимации?
Проблема в том что когда мой персонаж прыгает анимация работает хорошо но если у моего персонажа прыжок выше то анимация проигрывается быстрее и персонаж приземляется с анимацией покоя. Мне же нужно чтобы вне зависимости от того, как долго персонаж находился в воздухе, должна проигрываться анимация прыжка. Извините если я немного не понятно объяснил!
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour < Rigidbody2D rb; Animator anim; public float MoveSpeed; private float ControllerMove; public float JumpForce; public Transform GroundCheck; public LayerMask whIsGround; public bool Grounded = false; public float GroundRadius; void Start() < rb = GetComponent(); anim = GetComponent(); > void Update() < Grounded = Physics2D.OverlapCircle(GroundCheck.position, GroundRadius, whIsGround); ControllerMove = Input.GetAxis("Horizontal"); if(Input.GetKeyDown(KeyCode.Space) && Grounded) < Jump(); anim.SetBool("Jump", true); >else if(Grounded == true) < anim.SetBool("Jump", false); >> private void FixedUpdate() < rb.velocity = new Vector2(ControllerMove * MoveSpeed, rb.velocity.y); if(Input.GetAxis("Horizontal") == 0) < anim.SetBool("Run", false); >else < FlipSpite(); anim.SetBool("Run", true); >> private void Jump() < rb.velocity += JumpForce * Vector2.up; >private void FlipSpite() < if(Input.GetAxis("Horizontal") >0) < transform.localRotation = Quaternion.Euler(0, 0, 0); >if(Input.GetAxis("Horizontal") < 0) < transform.localRotation = Quaternion.Euler(0, 180, 0); >> >

- Вопрос задан более трёх лет назад
- 632 просмотра
AnimationState.speed
Скорость воспроизведения анимации. 1 — нормальная скорость воспроизведения.
Отрицательная скорость воспроизведения будет проигрывать анимацию в обратном направлении.
using UnityEngine; using System.Collections;
public class ExampleScript : MonoBehaviour < public Animation anim;
void Start() < // Walk backwards anim["Walk"].speed = -1.0f;
// Walk at double speed anim["Walk"].speed = 2.0f; > >
Copyright © 2020 Unity Technologies. Publication 2019.3
Быстрая и эффективная 2D-анимация

Создавайте плавную скелетную анимацию напрямую в Sprite Editor с помощью риггинга, тесселяции и создания костей. Воспользуйтесь PSD Importer, чтобы импортировать части персонажей напрямую из многослойной графики, и анимируйте их с помощью опорных кадров или кривых во временной шкале воспроизведения анимации. 2D Inverse Kinematics (IK) упрощает процесс анимации, автоматически рассчитывая положение костей и вращение, необходимое для достижения целевого положения.
Зачем использовать 2D-анимацию

Экономить время
С помощью основанной на использовании костей системы 2D-анимации вы сможете повторно использовать спрайты, чтобы оживлять персонажей, изменять частоту обновления кадров или мгновенно изменять анимацию. Экономьте время, импортируя многоуровневые изображения с помощью PSD Importer, ведь так вам не придется экспортировать спрайты по одному и пересобирать детали.

Плавная и адаптируемая анимация
Иногда анимацию необходимо изменить прямо во время выполнения программы, например, чтобы создать плавный переход, подстроить скорость анимации к скорости персонажа или чтобы отобразить реакцию ног персонажа на контакт с поверхностью. Узнайте, как Inverse Kinematics может помочь воплотить ваших персонажей в вашем мире.

Большее анимаций при меньшем количестве ассетов
Традиционная анимация требует значительного количества памяти для крупных персонажей и высокой частоты обновления кадров. Благодаря скелетной анимации, вы можете создавать все анимации из одного спрайта — это позволяет повторно использовать анимации для создания их различных вариантов, изменяя отдельные спрайты или подстраивая их так, как нужно вам.
Основные характеристики
Создание мешей и костей
Sprite Editor позволяет автоматически или вручную создавать меши для ваших спрайтов, устанавливать иерархию костей и задавать их вес в вершинах мешей.
Нативные решения для всех платформ
2D-анимация совместима с новыми версиями редактора и экосистемой инструментария. Разработка для нескольких платформ одновременно и бесшовная интеграция помогают сократить количество проблем с зависимостью и объем работы по импорту и экспорту.
Инструменты анимации
Создавайте анимацию прямо в окне Scene с помощью окна Dopesheet или кривых анимации и запускайте события. Используйте Animator для управления переходами анимации или Timeline для создания кат-сцен из нескольких анимационных клипов. Система частиц добавляет эффекты или 2D-физику, что делает поведение персонажей более реалистичным.
Атлас спрайтов
Объединяет несколько текстур в одну, что сокращает количество вызовов отрисовки и оптимизирует производительность. Добавьте своих анимированных в 2D персонажей и прочие элементы в один атлас. Вы сами можете определять, как упаковывать текстуры, задавая конфигурации для каждой платформы. API дает вам полный контроль над этим инструментом.
Продвинутые функции и API
IK добавляет анимацию, рассчитывая цепочку движений костей, необходимых для достижения целевой позиции. С помощью Sprite Swap вы можете изменять персонажей целиком или только их части, используя ту же самую анимацию и риггинг. И делать многое другое.
Новые возможности графики
Улучшите своих 2D-персонажей с помощью новой системы 2D-освещения для объемных эффектов с картами нормалей, инструмента Shader Graph, позволяющего создавать шейдеры в графическом интерфейсе, или Burst, значительно повышающего производительность.