Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 03.06.2023
Сообщений: 10

Как при вхождении в коллайдер (триггер) запустить анимацию?

04.06.2023, 17:53. Показов 2358. Ответов 3

Студворк — интернет-сервис помощи студентам
Уже долго мучаюсь с этой проблемой, пытался я сделать но не получилось. 2д проект.
Собсвтенно, в наработках было так. Был персонаж, и еще был пустой gameObject на котором весел Box Collider 2d с галкой is trigger. На самом персонаже был Rigidbody 2d и тот же бокс коллайдер 2д. Дальше я написал такой скрипт и повесил его на gameObject который и есть триггер для персонажа.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using System.Collections;
 
public class Aniyui : MonoBehaviour
{
    public GameObject Obj;
    public string NameAnimation;
    // Use this for initialization
    void Start()
    {
 
    }
 
    // Update is called once per frame
    void Update()
    {
 
    }
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Player")
        {
            Obj.GetComponent<Animator>().Play(NameAnimation);
        }
    }
}
По логике дальше я в юнити где скрипт поле object кидаю персонажа, а в названии анимации пишу имя анимации в аниматоре. На персонаже повесил Animation и Animator. Но как персонаж в этом самом триггере ошибки
Invalid Layer Index '-1'
UnityEngine.Animator:Play (string)
Aniyui:OnTriggerEnter2D (UnityEngine.Collider2D) (at Assets/AnimTrigger.cs:23)

и

Animator.GotoState: State could not be found
UnityEngine.Animator:Play (string)
Aniyui:OnTriggerEnter2D (UnityEngine.Collider2D) (at Assets/AnimTrigger.cs:23)

честно не представляю как это разрулить. Если кто то уже сталкивался с этим, то поделитесь своими заниями. Заранее благодарю всех!
Миниатюры
Как при вхождении в коллайдер (триггер) запустить анимацию?  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2023, 17:53
Ответы с готовыми решениями:

OnTriggerEnter Подскажите пожалуйста, как сделать чтобы при вхождении в триггер отнимались хп?
Например у меня есть триггер и мне надо чтобы когда в него заходит моб (Cube) или игрок (First Person Controller) у них отнимало хп. ...

Пауза при вхождении в триггер
Доброго времени суток. Написал скрипт для 2D игры, чтобы при вхождении в триггер игра вставала на паузу. Сам скрипт ошибку не выдаёт, но...

При вхождении в триггер не срабатывает анимация
using UnityEngine; using System.Collections; public class AnimTrigger : MonoBehaviour { public GameObject Obj; public...

3
1146 / 310 / 160
Регистрация: 30.07.2022
Сообщений: 1,788
Записей в блоге: 4
04.06.2023, 18:07
Лучший ответ Сообщение было отмечено rilawer как решение

Решение

rilawer, зачем нам скрипт Aniyui, если у вас ошибки в AnimTrigger.cs на 23 строке?

триггер и так получает доступ к персонажу через его коллайдер и проверкой на тэг
C#
1
2
3
4
5
6
7
void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Player")// col в данном случае и будет ваш Player
        {
            col.gameObject.GetComponent<Animator>().Play(NameAnimation); //так же вызываем 
        }
    }
0
35 / 26 / 11
Регистрация: 30.01.2018
Сообщений: 169
04.06.2023, 18:52
Это вторая тема от него с теми же проблемами. Он не знает как читать логи в консоли и не умеет пользоваться гуглом.
0
0 / 0 / 0
Регистрация: 03.06.2023
Сообщений: 10
04.06.2023, 19:28  [ТС]
Цитата Сообщение от devillived Посмотреть сообщение
rilawer, зачем нам скрипт Aniyui, если у вас ошибки в AnimTrigger.cs на 23 строке?

триггер и так получает доступ к персонажу через его коллайдер и проверкой на тэг
C#
1
2
3
4
5
6
7
void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Player")// col в данном случае и будет ваш Player
        {
            col.gameObject.GetComponent<Animator>().Play(NameAnimation); //так же вызываем 
        }
    }
Очень сильно вас благодарю, проблема решена. Когда захожу в триггер анимация меняется, но когда выхожу анимация всё таже, но с этим уже я разберусь, огромное вам спасибо!

Добавлено через 27 минут
Цитата Сообщение от devillived Посмотреть сообщение
rilawer, зачем нам скрипт Aniyui, если у вас ошибки в AnimTrigger.cs на 23 строке?

триггер и так получает доступ к персонажу через его коллайдер и проверкой на тэг
C#
1
2
3
4
5
6
7
void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Player")// col в данном случае и будет ваш Player
        {
            col.gameObject.GetComponent<Animator>().Play(NameAnimation); //так же вызываем 
        }
    }
Как я вам и говорил, я сам справился, то что при выходе анимация поменяется. Решение было довольно простым, но я подумал и справился.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class AnimTrigger : MonoBehaviour
{
    public GameObject Obj;
    public Animator Anim;
    public string NameAnimation;
    public string NameAnim;
 
    // Use this for initialization
    void Start()
    {
        Anim = GetComponent<Animator>();
    }
 
    // Update is called once per frame
    void Update()
    {
 
    }
    void OnTriggerEnter2D(Collider2D col)
    {
        if (col.tag == "Player")
        {
            col.gameObject.GetComponent<Animator>().Play(NameAnimation);
        }
    }
    void OnTriggerExit2D(Collider2D col)
    {
        if (col.tag == "Player")
        {
            col.gameObject.GetComponent<Animator>().Play(NameAnim);
        }
    }
}
Но вы меня натолкнули в нужное русло, благодарю вас!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2023, 19:28
Помогаю со студенческими работами здесь

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

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

Коллайдер-триггер, уничтожающий все входящие GameObject-ы
У меня постоянно появляется куча дубликатов одного из GameObject-ов. Нужно чтобы они, проходя через коллайдер-триггер, постепенно...

Как запустить анимацию
Здравствуйте. Значит нарисовал я анимацию в Shape Shifter сохранил как animated vector drawable в xml это файл я перенес в папку drawable в...

Как запустить анимацию?
Почему выдает ошибку в слове Play, Пишу так: Private void awake() { Animation anim = GetComponent&lt;Animation&gt;(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru