Ответы пользователя по тегу Unity
  • Как получить ссылку на Inventory (находится на префабе игрока) из InventoryGUI (висит на сцене в UI panel в Canvas)?

    @NIKROTOS
    Начинающий программист.
    Доступ к статическому классу(или одиночке) можно получить из любой точки приложения, можно создать класс переходник в который ты запишешь нужную тебе информацию и из которого ты её получишь. Кстати статический класс и одиночка не одно и тоже. Статическими классами советуют не злоупотреблять, в юнити их не использовал, так что смотри сам.
    Поиск объекта по ID или тегу и создание ссылки на него.
    Это если ты хочешь сделать программно, в инспекторе можно просто перетащить объект с нужным компонентом в требуемое поле, если названия классов совпадает, то юнити сам всё сделает.
    Ответ написан
  • Как пускать Raycast по области?

    @NIKROTOS
    Начинающий программист.
    Обычно для этих целей используют много лучей, или один луч поворачивают в пределах зоны, во всяком случае так обычно описывают поле зрения в игре, вариант описанный в комментарии(с триггером), тоже довольно хорош, он позволит сократить количество вызовов Raycast, до количества объектов в триггере, однако, если в триггер попадёт слишком много объектов, будет перебор в количестве Raycast, многие из которых будут отправляться повторно. Кроме этого в голову лезут только кастыли...
    Ответ написан
    Комментировать
  • Как добавить в список информацию из другого скрипта?

    @NIKROTOS
    Начинающий программист.
    Нужна ссылка на объект.
    В юнити аналог объекта это компонент, именно его тебе и нужно получить, например перетащить в соответствующее поле конченого объекта. Для определения доступа к полю, используются модификаторы доступа, тебе нужен public. В обществе программистов принято не использовать публичные поля, а давать доступ к их ЗНАЧЕНИЯМ через методы, например:
    public string getName()
    {
    return Name;
    }

    Или изменять их через методы:
    public void setName( string Value)
    {
    Name=Value;
    }

    Если быть точнее, просто создаёшь публичное поле, класса нужного тебе компонента(скрипта) и перемещаешь объект с этим скриптом, в это поле(мышкой). Это самый простой вариант, если нужно автоматизировать этот процесс, смотри документацию, как найти объект, у объекта пищи getComponent.
    Ответ написан
    Комментировать
  • Как сделать ИИ для соперников в игре про гонки на Unity?

    @NIKROTOS
    Начинающий программист.
    Расстояние, это разность координат, какое расстояние ты хочешь получить? Зелёная линия что обозначает? Она существует или её надо построить, а если надо построить, то как оно должно быть?
    Красная и зелёная линия петнтибикулярны? ...
    Ответ написан
    Комментировать
  • Как сделать редактор уровней в игре?

    @NIKROTOS
    Начинающий программист.
    Покажи какой будет уровень(пример), определи, что в нём будет, какие объекты, фон, объекты с которыми можно взаимодействовать,статичные объекты. В зависимости от всего вышеперечисленного, нужно думать о том, как ты закодируешь информацию, например карту как в терарии, можно закодировать в текстовый файл(позиция символа, равна позиции объекта, его символ означает вид объекта) или текстуру(по позиции пикселя и цвету).
    Ответ написан
    Комментировать
  • Как правильно задать позицию объекта относительно другого объекта?

    @NIKROTOS
    Начинающий программист.
    Я не понимаю, как работает данный скрипт, но возможно, проблема в том, что ты путаешь экранные координаты и обычные. У кого-то была похожая проблема.
    Ответ написан
    Комментировать
  • Игра в юнити,... как сделать чтобы герой нес предмет с собой?

    @NIKROTOS
    Начинающий программист.
    Повесь на объект скрипт, который будет менять его координаты, подстраиваясь под координаты точки на герое, костыль конечно, но работать должен.
    Ответ написан
    Комментировать
  • Как настроить направленное движение персонажа по стрелке?

    @NIKROTOS
    Начинающий программист.
    Не могу посмотреть видео. Судя по твоему описанию, тебе нужно двигаться в сторону курсора. Я делал курсор отдельным объектом, который двигал мышкой, получить его координаты не проблема. Тебе нужно получить вектор направления от игрока до курсора, для этого нужно из координат курсора вычесть координаты игрока.(https://docs.unity3d.com/ru/530/Manual/DirectionDi...)
    Если мы будем использовать данный вектор для движения, то скорость будет зависеть от расстояния, так что его нужно будет сделать единичным(нормализовать(https://poqxert.ru/blog/unity/tutorials/matematika...)) и домножать на коэффициент скорости.

    Стоит так-же изучить:https://docs.unity3d.com/ru/530/Manual/Understandi...
    Ответ написан
    Комментировать
  • Как лучше сделать радиус у объекта?

    @NIKROTOS
    Начинающий программист.
    Звучит так, как будто игра в изометрии, или с видом сверху. В этих случаях, можешь просто повесить сверху коллайдер и тыкать в него.
    Возможно ты говорил про коллайдер кружка, его можно уменьшить.
    Во многих играх(например dota 2) Для отображения этих кружков используется отдельная кнопка(сразу видно все).
    Если игра по типу обороны башен, можешь ввести какую-нибудь доп механику, например как пилоны в старкрафте у протосов, по этому объекту(или линии питания), который будет питать(снабжать патронами или другими ресурсами) башни, смотреть характеристики требуемой(ых). То бишь получать требуемые данные альтернативным способом.
    Ответ написан
  • Как сделать натяжение, отскок и остановку платформы?

    @NIKROTOS
    Начинающий программист.
    Там точно требуется AddForce ? Почему каждые 5 секунд?
    Если делать через него, то стоит добавить rb на блок, что-бы платформа в него врезалась.
    Возможно ли обойтись просто плавной сменой координат(это будет менее ресурсно затратно)?
    Ответ написан
  • Как сделать магазин в юнити с двумерными массивами?

    @NIKROTOS
    Начинающий программист.
    Не понял, причём тут двумерный массив? У тебя скины разделяются по частям тела? Я бы сделал отдельный класс для части тела, и магазином передавал его герою, в идеале должен быть отдельный объект(компонент), который управляет скинами игрока, и имеет в себе их список(на случай если игрок решит поменять его во время игры), именно к этому объекту(компоненту) и должен обращаться магазин, добавляя скин в его пул.
    Ну или если использовать двумерный массив( первое число, определяет класс объекта(шлем), второе определяет номер скина в пуле) , можно хранить не скины, а числа по которым их можно найти.
    Ответ написан
    Комментировать
  • Как исправить проблему с текстурами?

    @NIKROTOS
    Начинающий программист.
    Я правильно понял? При запуске сцены на прямую, всё работает, а пр запуске через меню нет? Звучит так, как будто запуск через меню, чем-то отличается от вызова сцены на прямую.
    В этой статье(https://docs.unity3d.com/ru/530/Manual/ExecutionOr...) написано:
    "Учтите, что для объектов, добавленных в сцену сразу, функции Awake и OnEnable для всех скриптов будут вызваны до вызова Start, Update и т.д. Естественно, для объектов вызванных во время игрового процесса такого не будет. "
    Следовательно возможно ошибка заключается в том, что эти объектам текстура задаётся в методе Awake, который ВОЗМОЖНО не запускается при вызове сцены.

    У тебя меняется положение солнца? Если нет, можно запечь карту света и при запуске переходе на сцену в методе старт, её прописать через код(симптом будет вылечен).
    Ответ написан
    2 комментария
  • Как UI объект прикрепить к gameobject?

    @NIKROTOS
    Начинающий программист.
    Ты элемент интерфейса, расположенный на листе перед камерой, хочешь позиционировать относительно объектов в игре, может стоит сделать спрайт HPBar над нужным тебе объектом(спрайт должен быть ребёнком) и не мучиться с этим расположением?
    Ответ написан
  • Почему исчезает объект во время поворота?

    @NIKROTOS
    Начинающий программист.
    Можно сделать объект ребёнком камеры, тогда будет работать, так, как хочешь.
    Кстати, камера видит объекты на расстоянии от и до, то-бишь объект может быть слишком близко.
    Ответ написан
    Комментировать
  • Как оптимизировать отрисовку множества одинаковых объектов?

    @NIKROTOS
    Начинающий программист.
    https://habr.com/ru/post/314306/ статья по оптимизации.
    https://www.sites.google.com/site/rusewyl/grafika/... Статья с решением, конкретно этой проблемы.
    Ответ написан
  • Как передать данные в другой скрипт?

    @NIKROTOS
    Начинающий программист.
    Сделать эти данные публичными/сделать публичный метод, который их вернёт.
    На компоненте, которому нужны данные, создать требуемый публичный объект/переменные.
    После можно перетащить объект(переменные) с этими данными(методом) из древа объектов/сцены на публичную переменную компонента, которому требуются эти данные, он сам найдёт нужный компонент и создаст ссылку на него. По ссылке вызываем переменную/метод. Можно сделать через код, используя GetComponent.

    Поиск по тегам/названию компонента, использовать не советую, можно попробовать реализовать связь через иерархию.

    Есть ещё паттерн одиночка, на такой объект можно сослаться из любой точки программы, но он должен быть в единственном экземпляре. Можно сделать объект с которого требуются сведенья, одиночкой или передавать эти данные через одиночку.
    Ответ написан
    Комментировать
  • Как в unity3d сделать поочередное прохождение через заданные точки?

    @NIKROTOS
    Начинающий программист.
    Паттерн итератор в помощь.
    Ответ написан
    Комментировать
  • В каком движке игра будет работать стабильнее: Unreal Engine или Unity?

    @NIKROTOS
    Начинающий программист.
    Унреал как движок по итогу больше жрёт, если в настройках не покопаться(не факт, что это поможет). В нём многое делается за тебя:
    объекты почти на все случаи жизни, которые остаётся только настроить;
    предустановленые шейдеры(потому игры на нём и выглядят лучше));
    и тд...
    Однако, всё это делает и движок и конечный продукт тяжелее и требовательнее по характеристикам.
    В унреале есть блюпринты, если пишешь на них, всё зависит от твоего скила. Можно сделать оптимизировано, а можно скриптом движения повесить игру...
    В юнити мишуры, в разы меньше, так что думаю, что он из коробки работает быстрее.
    С другой стороны, люди говорят, что плюсы работают быстрее шарпов, а в унреале программируют на них...
    Ответ написан
    Комментировать
  • Как сделать так, что-бы можно было летать по диагонали?

    @NIKROTOS
    Начинающий программист.
    В этом языке не разбираюсь, но обычно в этом случае, пишут отдельные методы для прибавления по отдельным осям(в случае нажатия кнопок), которые выдают единичные векторы. Эти векторы передаются в скрипт движения , в котором их складывают, результат делают единичным и его умножают на скорость.
    То-есть все движение прописывается не в реакции нажатия на кнопки, а в отдельном методе, который принимает данные с методов нажатия, по итогу разные методы друг с другом не спорят.
    Кстати, подумай, что произойдёт, если игрок нажмёт вперёд и назад одновременно, или в полёте вообще ничего жать не будет и тд...
    Ответ написан
    Комментировать
  • Как узнать касается ли игрок к солайдеру 5го объекта в пуле?

    @NIKROTOS
    Начинающий программист.
    У пятого объекта есть коллайдер? Пусть объект сам говорит, что он коснулся игрока. И рассказывает ему, что требуется(номер в пуле).
    Ответ написан