Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
82
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

186      Глава 7. Игра от третьего лица: перемещение и анимация игрока

этого списка (манипуляторы управления находятся слева от их значков), меняя их порядок. Поместите переход Jump наверх списка для обоих узлов Idle и Run, дав ему приоритет над остальными. Если анимация кажется вам слишком медленной, поменяйте скорость воспроизведения (воспроизведение выглядит лучше всего при скорости 1.5).

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

7.4.3. Код, управляющий контроллером-аниматором

Наконец, мы добавим методы в сценарий RelativeMovement. Как уже объяснялось, большая часть работы по настройке состояний анимации выполнена внутри контроллера; осталось написать небольшой код, управляющий богатой и гибкой системой анимации (см. следующий листинг).

Листинг 7.6. Задание значений в компоненте Animator

...

private Animator _animator;

...

_animator = GetComponent<Animator>(); ¬ Добавляется в метод Start().

...

_animator.SetFloat("Speed", movement.sqrMagnitude); ¬ Сразу после инструкции if

для горизонтального движения.

if (hitGround) {

if (Input.GetButtonDown("Jump")) { _vertSpeed = jumpSpeed;

}else {

_vertSpeed = -0.1f;

_animator.SetBool("Jumping", false);

}

}else {

_vertSpeed += gravity * 5 * Time.deltaTime; if (_vertSpeed < terminalVelocity) {

_vertSpeed = terminalVelocity;

}

if (_contact != null ) { ¬ Не вводите в действие это значение в самом начале уровня.

_animator.SetBool("Jumping", true);

}

if (_charController.isGrounded) {

if (Vector3.Dot(movement, _contact.normal) < 0) { movement = _contact.normal * moveSpeed;

} else {

movement += _contact.normal * moveSpeed;

}

}

}

...

И снова большая часть кода повторяет предыдущие листинги; код анимации имеет множество пересечений с существующим сценарием движения. Выберите строки с переменной _animator, чтобы найти фрагменты, предназначенные для вставки в код.