Задать вопрос
  • Проблема с смертью в Unity 2D?

    K0TlK
    @K0TlK
    Внимательно посмотрите на эту строчку: private void onCollisionEnter2D(Collision2D other) Ничего не смущает?
  • Как пофиксить баг с MousePosition?

    K0TlK
    @K0TlK
    ChelSiharpniy, Гений, прежде чем строчить на форумах вопросы, изучи хоть основы фреймворка с которым ты работаешь.
    var position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    position.z = transform.position.z;
    transform.position = position;


    Вот так это делается, изменяешь все, кроме оси, которая тебе не нужна.
    Курсы по юнити от юнити: https://learn.unity.com/courses
    Основы программирования: https://ulearn.me/
  • Как пофиксить баг с MousePosition?

    K0TlK
    @K0TlK
    Ну так не перемещайте объект по Z координате.
  • Как сделать проверку нахождения объекта в триггере?

    K0TlK
    @K0TlK
    a, Странно, в 2д все работает, в 3д нет. Нагуглил пару похожих вопросов:
    https://stackoverflow.com/questions/41716663/detec...,
    https://forum.unity.com/threads/fix-ontriggerexit-...

    Можете сделать как предлагают там либо на объект, который должен входить в триггер, повесить скрипт, который отключает объект и вызывает ивент. Выделить отдельный метод, который будет вызываться и при отключении объекта и при выходе из тригера. Получать в OnTriggerEnter этот компонент и подписываться на событие отключения объекта. Главное не забыть отписаться от события.
  • Как сделать проверку нахождения объекта в триггере?

    K0TlK
    @K0TlK
    Насколько мне известно, если объект отключить во время нахождения в триггере, то вызывается OnTriggerExit, соответственно ваш код должен работать. Зачем проверки if(other)? Если OnTrigger... вызывается, то он уже подразумевает под собой то, что в other что-то есть, поэтому null оно не будет равно. Зачем вам поле _isDown? Оно используется для хранения false? Не вижу, чтобы вы его где-то в коде изменяли или использовали как-то, оно и не нужно вам, вместо _isDown и !_isDown используйте просто true false. Используйте Debug.Log или дебаггер, чтобы определить, вызывается ли метод OnButtonExit корректно.
  • Игрок в платформере вместо падения летает?

    K0TlK
    @K0TlK
    WasTabon, ну, вы, собственно ответили на свой вопрос. Не изменять Y, чтобы двигаться только по X. MovePosition, кстати, не двигает объект, а телепортирует, для передвижения лучше изменять velocity у компонента Rigidbody. Так будет гораздо меньше проблем с передвижением и коллизиями.
  • Игрок в платформере вместо падения летает?

    K0TlK
    @K0TlK
    WasTabon, Приложите полностью код всего компонента, чтобы понимать что такое isPlayerEntered
  • Как присвоить координаты объекту?

    K0TlK
    @K0TlK
    Zefirot, Я не могу знать откуда оно берется, пока не увижу код полностью, у меня все работает, вы возможно, где-то изменяете эти позиции. Вот что у меня:
    Debug.Log("1> (" + _transforms[0].transform.position.x + ", " + _transforms[0].transform.position.y + ")");// 1> (1, 1)
    Vector3 TV = _transforms[0].transform.position;
    TV.x -= 0.000001f;
    TV.y -= 0.000001f;
    Debug.Log("2> (" + TV.x + ", " + TV.y + ")");//2> (0.999999, 0.999999)
    _transforms[0].transform.position = TV;
    Debug.Log("3> (" + _transforms[0].transform.position.x + ", " + _transforms[0].transform.position.y + ")");//3> (0.999999, 0.999999)
  • Как присвоить координаты объекту?

    K0TlK
    @K0TlK
    Zefirot, У меня ваш код работает и все присваивается, прикладывайте полностью весь класс. Как минимум, без метода RoundVector3 я воспроизвести баг не могу.
  • Как присвоить координаты объекту?

    K0TlK
    @K0TlK
    Zefirot, В чем смысл этого округления? Вы же понимаете, что разницу между 5,120002 и 5,12 вы на глаз не увидите? Вы присваиваете ту же самую позицию, которая и была ранее, только на несколько тысячных меньше. Чего вы ожидаете увидеть? Как объект переместится в другую сторону? Вы буквально делаете это:
    var tv = transform.position;
    transform.position = tv;
  • Как присвоить координаты объекту?

    K0TlK
    @K0TlK
    Что делает метод RoundVector3? Полностью код этого метода приложите.
  • Как вызвать класс из другого скрипта (прикреплены к одному объекту)?

    K0TlK
    @K0TlK
    Hiniks YouTube, [RequireComponent(typeof(Class1))] нужно для того, чтобы на геймобжекте, к которому прикреплен Class2 всегда был прикреплен компонент Class1
  • Как вызвать класс из другого скрипта (прикреплены к одному объекту)?

    K0TlK
    @K0TlK
    Hiniks YouTube, Приведу пример:
    public class Class1 : MonoBehaviour
    {
        public void Log(string message)
        {
            Debug.Log(message);
        }
    }
    
    [RequireComponent(typeof(Class1))]
    public class Class2 : MonoBehaviour
    {
        private Class1 _class1;
    
        private void Start()
        {
            _class1 = GetComponent<Class1>();
            _class1.Log("ABC");
        }
    
    }


    Есть класс Class1, у него метод Log. Class1 висит на геймобжекте. Я хочу вызвать этот метод из другого класса Class2, который тоже висит на том же самом геймобжекте. Соответственно, я определяю поле типа Class1 с названием _class1 и в методе старт присваиваю ему значение, вызвав GetComponent(). GetComponent() Проверяет, есть ли на объекте компонент типа(класса) T и возвращает этот компонент, если он присутствует. Всё. больше вызывать GetComponent не нужно, так как компонент у нас есть и он закэширован в поле _class1. Далее просто вызываю метод Log у закэшированного объекта _class1. Если это все для вас сложно, то вам сюда https://ulearn.me/ для изучения c# или сюда https://learn.unity.com/ для изучения unity.
  • Как сделать регулировку громкости с помощью слайдера?

    K0TlK
    @K0TlK
    yraiv, Чтобы проще было работать, слайдеру в инспекторе задайте минимальное значение на -80, максимальное на 0. А в методе, который устанавливает громкость, уберите Lerp. Есть метод GetFloat у аудиомиксера что-то типа этого должно получиться:
    if(_audioMixer.GetFloat("Volume", out float value))
    {
        _slider.value = value;
    }
  • Unity 2d не работает колайдер?

    K0TlK
    @K0TlK
    У коллайдеров не ставили галочку напротив Is Trigger?
  • Как сделать регулировку громкости с помощью слайдера?

    K0TlK
    @K0TlK
    yraiv, Так. Вы как все делаете? Мой код нужно поместить в отдельный MonoBehaviour, этот MonoBehaviour поместить на слайдер или куда-нибудь на сцене, закинуть в поля аудио миксер и слайдер соответственно аудиомиксер и слайдер со сцены(Если у вас не аудиомиксер, то вам нужно изменить мой код и подставить туда свои методы изменения звука), В СЛАЙДЕРЕ В ИНСПЕКТОРЕ НЕ ДОЛЖНО БЫТЬ НИЧЕГО В ПОЛЕ ON VALUE CHANGED. Всё. Советую вам пройти официальный курс от юнити, чтобы получить базовые знания о том, как все работает
  • Как сделать регулировку громкости с помощью слайдера?

    K0TlK
    @K0TlK
    yraiv, Вы сейчас просто устанавливаете значения звука в 0 при изменении слайдера. Вам нужно в коде брать значение слайдера и устанавливать его в mixer.
    [SerializeField] private AudioMixer _audioMixer;
        [SerializeField] private Slider _slider;
    
        private void OnEnable()
        {
            _slider.onValueChanged.AddListener(ChangeVolume);
        }
    
        private void OnDisable()
        {
            _slider.onValueChanged.RemoveListener(ChangeVolume);
        }
    
        private void ChangeVolume(float volume)
        {
            _audioMixer.SetFloat("Volume", Mathf.Lerp(-80, 0, volume));
        }


    что-то типа этого должно получиться. [SerializeField] нужен, чтобы private поля отображались в инспекторе. Если вы напрямую с децибелами работаете, то mathf.Lerp будет работать, если же есть прослойка, которая конвертирует их в проценты - то нет.
  • Как сделать регулировку громкости с помощью слайдера?

    K0TlK
    @K0TlK
    yraiv, Вы просто прикрепили этот скрипт на слайдер и в OnValueChanged у слайдера вызываете метод ChangeVolumeMusic? То есть выглядит все примерно так: 6232ca8b6dab0671242461.jpeg ?
  • Книги или курсы по Геймдев?

    K0TlK
    @K0TlK
    Именно про боевые системы вряд-ли что-то есть из книг или курсов, вам просто нужно изучать геймдизайн. Нет каких-то особенных методов для создания способностей и т.д. Все зависит от вашего воображения, а цифры, математика и рассчеты используются чтобы балансить то, что уже создано. Геймдизайн, баланс и т.д. - итерационные процессы и понимание того, какая способность сколько урона должна наносить, приходит через несколько итераций.
  • Почему у переменной берется 0?

    K0TlK
    @K0TlK
    Это, наверное, самый странный способ сделать цикл, используя рекурсию, из всех, что я видел. Замените if на while, уберите из корутины запуск корутины, после цикла добавьте yield break, чтобы корутина завершалась и вместо вызова Burning делайте StartCoroutine(Burning()). После, если не поможет, отредактируйте пост и добавьте код всего класса, чтобы понимать, изменяется ли где-нибудь timeBurn.