Задать вопрос
  • Как сделать так чтобы вначале игры было максимальное здоровье и каждый уровень(сцену) здоровье не обновлялось?

    Reminded208
    @Reminded208
    Unity и веб разработчик
    Исходя только из кода получается, что:
    1-я ошибка в 37 строке у тебя возможно не назначена ссылка на текстовый объект TMPro, к которому обращается скрипт.
    2-я ошибка скрипт не может найти на этом объекте компонент Rigidbody, который ты прописал инициализировать в Awake().
    Ответ написан
    1 комментарий
  • Что делать когда меня про запуске игры камера становится больше и иногда канвас меняет места кнопок текста. как исправить?

    @KirilLelikov10
    Ты попробуй если уже не зделал выставить в канвасе пункт UI Scale mode тип Scale With Screen Size и разрешение 1280 на 720 или 1920 на 1080 и выровняй все обекты в канвасе может поможет.
    Ответ написан
    Комментировать
  • Хочу сделать типо босс файта, чтобы анимации которые я добавлю в список были рандомными, но у меня куча ошибок, что делать?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    1) Основа вашей идеи - это компонент Animator, на который у вас нет ссылки.
    2) Метод SetBool() имеет два аргумента: ключ и значение вида true или false.
    3) В блоках вида
    if (animText[1] == 1)
    Вы сравниваете элемент списка под номером 1, то есть строку, с числом. Строка это текст, не число.
    4) Ниже вы прописали корутину, которую никто не запускает
    5) Корутина не имеет паузы
    yield return new WaitForSeconds(нужное_время);
    6) В строке
    animText = Random.Range (1f,4f);
    Вы пробуете вставить в ссылку типа списка строк нецелое число.
    7) Допустим, у вас всё бы работало, но SetBool это такой переключатель, который обратно сам не возвращается, он остаётся в состоянии, в которое вы его поставили.

    Критикуя-предлагай, поэтому вот что я скажу.

    Если для переключения механик босса в вашей игре действительно достаточно лишь переключать анимации, то я настоятельно советую использовать вместо логических состояний триггеры, как команды на запуск, которым не нужно давать выключение.
    И, опираясь на ваш код (и скромные понимания референса игры), могу сказать, что этот скрипт можно сделать ещё более универсальным, удалив из него вообще любые упоминания конкретных для босса параметров.

    Как это будет выглядеть:
    using UnityEngine;
    
    public class BossAnimator : MonoBehaviour {
    
    	// Ссылка на аниматор босса
    	[SerializeField] Animator anim;
    
    	// перечень триггеров анимации
    	// убедитесь, что там нет null элементов
    	[SerializeField] string[] triggers;
    
    	// Метод, который начнёт весь движ
    	// Как и где его вызывать - решайте сами по ситуации
    	public void StartFight() {
    		OnAnimationEnded();
    	}
    
    	// Данный метод нужно привязать как событие
    	// к концу каждой анимации
    	public void OnAnimationEnded() {
    		// Выбираем случайный номер из списка - наш следующий триггер
    		int nextTriggerIndex = Random.Range(0, triggers.Length);
    		// Применяем
    		anim.SetTrigger(triggers[nextTriggerIndex]);
    	}
    }

    Разумеется, скрипт сырой и можно его доработать соответсвенно специфик игры, о которых я не знаю, но в целом он универсален, так как вы в инспекторе босса сами можете назначить перечень любых триггеров анимации в любом количестве.
    Ответ написан
    5 комментариев
  • Что делать если кнопки перестали работать на юнити 2д?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Сначала нужно определиться - кнопки именно что не работают или просто не нажимаются.
    На ум приходит 5 сценариев:
    1) Что-то мешает.
    Иерархия интерфейса устроена таким образом, что чем выше в иерархии объект, тем раньше он рисуется. Возможно ниже по иерархии есть иной графический элемент (даже если он в этом месте прозрачен, главное чтобы был включен), который перехватывает нажатие на себя. Нужно либо поменять иерархию, либо отключить галочку Raycast Target на всех объектах, которые мешают нажатию (ну или просто подвигать)
    2) Кнопка в принципе выключена.
    Проверьте, включено ли свойство Interactable кнопки
    3) Возможно сама кнопка не слушает нажатия.
    Проверьте на всякий случай, рядом с кнопкой на том же объекте должен лежать текст или картинка и там галочка Raycast Target должна быть включена.
    4) На сцене нет Event System
    Эта штука находится в меню создания UI / Event System
    5) Сам канвас не слушает нажатия - проверьте чтобы на канвасе был включенный компонент "Graphic Raycaster"

    Но может быть и так, что событие у самой кнопки просто не настроено (On Click)
    Ответ написан
    3 комментария