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

Как сделать так чтобы враг проигрывал анимацию атаки?

UnityC#2D

Как сделать так, чтобы враг проигрывал анимацию атаки, когда прикасался к коллайдеру игрока, НО, когда выходил из коллайдера анимация атаки прекращала проигрываться?? Заранее спасибо!


Комментарии

2
Name_833 2 года назад

Тут зависит всё от твоей архитектуры.
В общем случае у тебя на враге (на объекте с коллайдером) должет быть скрипт которые меняют твой параметр в анимации.
Создаёшь новый AnimatorController, закидываешь в него(в окно аниматора) свои анимации.
Добавляешь там bool параметр (Например Atack), и делаешь Transition переход между, например, анимацией покоя(наприм. idle) и атакой, добавляешь туда параметр созданный тобой, выставляешь значение True, и обратный в значение False.
В скрипте собственно ссылаешься на Animator из скрипта и обращаешься к созданному параметру в нём.
Например так:


    [SerializeField] private Animator animator;

    private void Start()
    {
        if (animator == null)
        {
            animator = GetComponent<Animator>(); //получаем аниматор
        }
    }
    // срабатывает при столкновении,
    // если коллайдер помечен в инспекторе, как isTrigger
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "player") //проверяем является ли объект игроком
        {
            animator.SetBool("Atack", true); // ставим анимацию
        }
    }
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.tag == "player") //проверяем является ли объект игроком
        {
            animator.SetBool("Atack", false); // ставим анимацию
        }
    }

Intacto 2 года назад

Name_833, Спасибо, помогло

Гости не могут отвечать на вопросы. Войдите на Сайт или Зарегистрируйтесь