Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
4 / 3 / 2
Регистрация: 03.12.2023
Сообщений: 116

Наследование анимаций

17.01.2024, 19:38. Показов 874. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго дня!
Пока прохожу курс "с нуля", параллельно выстреливают идеи...
Тема- наследование, не могу разобраться с аниматором.
Есть родительский скрипт, к которому привязан аниматор:
Кликните здесь для просмотра всего текста
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
34
35
36
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class AnimatorStates : MonoBehaviour
{
    public FirstPersonMobileTools.Joystick Movementcontroller;
    public Animator _animator;
    void Start()
    {
        Movementcontroller = FindObjectOfType<FirstPersonMobileTools.Joystick>();
        _animator = GetComponent<Animator>();
    }
    void Update()
    {
        _animator.SetFloat("speed", Movementcontroller.Vertical);
        _animator.SetFloat("strafe", Movementcontroller.Horizontal);
    }
    public void Gun1On()
    {
        _animator.SetBool("gun1", true); //анимация gun1
    }
    public void Gun1Off()
    {
        _animator.SetBool("gun1", false); //анимация gun1
    }
 
    public void Gun4On()
    {
        _animator.SetBool("gun4", true); //анимация gun4
    }
    public void Gun4Off()
    {
        _animator.SetBool("gun4", false); //анимация gun4
    }
}


И дочерний скрипт, который висит на Gun1 (на Gun4 аналогичый):
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Gun1 : AnimatorStates
{
    void OnCollisionStay(Collision collision) //или Enter
    {
        if (collision.gameObject.GetComponent<AnimatorStates>())
        {
            Gun1On();
        }
    }
    void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.GetComponent<AnimatorStates>())
        {
            Gun1Off();
        }
    }
}


В редакторе Gun1 просит обозначить для скрипта Animator (хотя по логике он пустой и должен быть, до контакта с игроком), но так и не определяется Animator при выполнении условия.
Скрипт Gun1 дочерний, разве не должен автоматом подтянуть Animator из AnimatorStates?
Если выбрать вручную, то при старте игры он снова пустой. Я что то не так делаю




В кратце- когда оружие (со скриптом Gun1), попадает в коллизию персонажа (со скриптом AnimatorStates)
Gun1 вызывает Gun1On и передает значение в аниматор, который подключен к игроку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2024, 19:38
Ответы с готовыми решениями:

Совмещение 2D анимаций
Здравствуйте! Я новичок в Unity, делаю простенький 2d платформер. У меня есть несколько анимаций + анимация получения урона (объект за 10...

Смешение анимаций
Всем здравствуйте! Изучаю Unity. Добрался таки до анимаций. Тут видео с результатом: https://transfiles.ru/sw51p На видео показано,...

Задержка проигрывания анимаций
Имеется объект с тремя анимациями: покой, бег, прыжок. У персонажа в ногах есть коллайдер, который проверяет, стоит персонаж на земле или...

2
4 / 3 / 2
Регистрация: 03.12.2023
Сообщений: 116
17.01.2024, 21:20  [ТС]
Пока апдейтом в дочернем скрипте тяну компонент аниматора. Но значение еще не передается.

C#
1
2
3
4
    private void Update()
    {
        _animator = GetComponentInParent<Animator>();
    }
Добавлено через 33 минуты
Под каждое действие дописал print, я понял, что эта связка не рабочая полностью. Даже обращения к AnimatorStates не происходит нормально. Только если объект держать в игроке, происходят все действия, хаотично

Добавлено через 6 минут
По нажатию кнопки сделать не проблема, но надо именно по коллизии

Добавлено через 48 минут
Всё допилил. Всё переделал. Наследование не понадобилось. Видимо еще не понял эту тему)
0
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,215
18.01.2024, 21:57
думаю у родителя не обязателен аниматор. и кажется ты наследование тулишь не совсем туда, куда нужно.
и уже говорил, зачем ты в каждом кадре (OnCollisionStay) берешь компонент. ведь достаточно его поднять один раз с помощью OnCollisionEnter и пользоваться до смены оружия на другое ?
посиди, подумай, как распределить ответственность между объектами.
короче трешь у тебя . не парь мозги поучись по урокам. покури паттерн стейтмашина например. а архитектура со временем придет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2024, 21:57
Помогаю со студенческими работами здесь

Создание анимаций кодом
Здравствуйте. Имеется следующая затея, пытаюсь реализовать: в процессе игры задание анимации персонажу, её сохранение и дальнейшее...

Создание анимаций кодом
Надеюсь мне не настучат по голове, что я повторяю тему? но та ушла вниз, а ответа так и нету (в гугле тоже ответа всё ещё нету) а...

Условие запуска анимаций 2D
Привет форум, начал осваиваться в Unity и для начала решил создать 2D игру, написал код с условиями запуска анимаций для джойстика и...

Смена анимаций из скрипта
Привет! Я новичок в програмировании, поэтому сильно не смейтесь и не плачьте... Вкратце опишу проблему. Я создал скрипт управления...

Оптимальный вариант анимаций в изометрии 2д
Здравствуйте, пытаемся разработать игру. Сама игра в 2d, пошаговая стратегия. Вид - изометрия. В игре есть юниты, которыми можно управлять....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru