Ответы пользователя по тегу Unity
  • Unity - BoxCollider2D - Почему происходит коллизия объекта с самим собой?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Если по правильному то Raycast исходит из центра объекта, и он сразу врезается в свой же коллайдер. Соответственно точку из которой посылается луч, нужно вынести за пределы коллайдера. У вас же обратная ситуация, луч посылается откуда-то из вне со смещением, в центр нашего объекта. Из чего следует вывод, что если между точкой откуда идёт луч и до центра персонажа, нет никаких других коллайдеров, то он попадает в персонажа.
    Вариант решения:
    - Отрисовать луч через Debug.DrawRay или Debug.DrawLine (что-то такое и настроить правильное смещение конечной точки).
    - Экспериментальным путём найти подходящие значения.
    - Создать в персонаже 2 дополнительных ГО и использовать их как конечную и начальную точки луча.
    Ответ написан
    Комментировать
  • Как назначить элементы массива через код?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Объявляешь через код массив вектор3 и тут же инициализируешь его элементы с заданными координатами.
    Ответ написан
    Комментировать
  • Как реализовать преследование в UNITY, но только по осям X и Z?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Делай псевдо2д - самый простой вариант, изначально Unity 3d движок и даже когда ты создаёшь 2д проект, там идёт почти такая же обработка как и 3д. Так вот:
    Создаёшь 3д проект, переключаешь камеру в 2д, поворачиваешь "ground" лицом к камере, потом ставишь на неё препятствия из кубов "условно". Создаешь персонажа, делаешь ему управление с передвижением только по 2 нужным осям, кидаешь на него 2д спрайт. А ботов настраиваешь через стандартный NavMesh и вуаля, у тебя 2д игра с 3д возможностями.
    Ответ написан
    9 комментариев
  • Что за баг с юнити?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Дядь Богдан, ты бы версию Unity написал. Может ты юзаешь последнюю доступную а не стабильную LTS и тогда разного рода баги - это норма. Может пакеджы какие подключил или еще чего, скриншот мягко говоря - не информативный. Как долго висит это окно? Если это происходит при создании нового пустого проекта еще и не просто 3D, а например с HDRP, то это нормально. Где описание после чего появилась проблема и какие варианты решения предпринимались? Сколько раз редактор переустанавливал и переустанавливал ли вобще? Сколько раз винду переустанавливал?
    Ответ написан
  • Как перенести карту мира в игру?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Берёшь карту Испании, условно). И режешь её в графическом редакторе, делаешь каждую провинцию отдельным слоем например или изображением. Потом экспортируешь данную многослойную карту или картинки в Unity, там собираешь карту как она должна быть например из Image-й или Button-ов. Ну а дальше думаю и так понятно.
    Ответ написан
    Комментировать
  • Здравствуйте. Возникла довольно популярная проблема. Поможете?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    У вас ошибка в названии метода, а именно FixUpdate(), должно быть FixedUpdate(). В связи с чем инпут у нас не меняет своих значений, isGround = false, ну и со всеми вытекающими. В будущем рекомендую юзать Debug.Log(); или print(); что бы хотя бы понимать, на каком этапе все сломалось.
    Ответ написан
    Комментировать
  • Как заставить игнорировать другие объекты NavMesh?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Смотри, для этого объектам нужно во первых назначить разные слоя(Layer), затем заходишь в Edit->Project settings и там в самом низу(Unity 2021) есть сетка где на пересечении разных слоев стоят галочки, это собственно и есть то, что тебе нужно. Здесь настраивается взаимодействие между слоями, кто с кем может столкнутся и тд.
    Ответ написан
    Комментировать
  • Как сместить камеру при удержании какой либо клавиши?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Можно юзать Input.GetKeyDown("s"), данная ф-ция вызывается только раз при нажатии на кнопку. Или можно скостылить какой-нить bool флаг.
    Ответ написан
    Комментировать
  • Почему не работает прыжок в Unity 2D?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Очень странный способ чекать землю. А почему бы не использовать встроенные возможности OnCollisionEnter/stay/exit и чекать в них по тегу или имени?
    Ответ написан
  • Как в Unity сделать чтобы по длительному зажатию клавиши, выполнялось какое то действие?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Делаем например банально в апдейте через if getkey в нем же делаем некий таймер который покуда держится кнопка таймер++ и при достижении определенного значения отправляем коллбек или что-то там делаем.
    Ответ написан
    Комментировать
  • Unity Как сделать так, что бы объект реагировал на столкновение с игроком только снизу (как блок с вопросиком в марио)?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    1. Сделать снизу обьекта небольшой коллайдер/триггер.
    2. Сделать на голове персонажа этот коллайдер/триггер.
    3. Рассчитывать вектор движения обьекта с которым столкнулись.
    Я бы выбрал первый вариант)
    Ответ написан
    Комментировать
  • Как реализовать переход на другую сцену?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    подключаешь библиотеку using
    using UnityEngine.SceneManagement;
    
    //в метод Update или CliksCar добавляешь
    if(clik >= 1000)
    {
    SceneManager.LoadScene("sceneName"); //собсна в скобках имя сцены
    }
    Ответ написан
    2 комментария
  • Поможете решить генерацию объектов в Unity?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Можно попробовать использовать transform.LookAt(target); Или же через raycast. Сперва проверяем находятся ли указанные координаты в поле зрения, если нет размещаем так обьект, если же да, то генерим новые координаты.
    Ответ написан
  • Какой монитор выбрать для работы в [Unity3d] [Visual Studio Code и т.п]?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    1. Процент игроков с мониторами 2k/4k ничтожно мал, все сидят на fullhd и будут сидеть еще какое-то время, да и карта слабовата. Недавно себе приобрёл LG 27GL650F-B после чего мой 24" заменил старый второй моник. По своим наблюдениям могу сказать, что фуллхд на 27" вполне себе хорошо смотрится, я при своём 100% зрении на расстоянии около 40см не вижу никаких пиксельных сеток и прочей дичи о которой пишут, но это ИМХО. Спустя некоторое время начал активно работать в Unity и понял, что нужно было переплачивать не за 144гц, а за дюймы, так как моего монитора критически не хватает для комфортного размещения интерфейса Unity, сейчас смотрю в сторону LG 34GL750-B и всем рекомендую для подобного рода работы, юзать ультраширокие мониторы. Только IPS матрица никаких TN, так как важно видеть реальные цвета, а не то, что производитель там себе навоображал.
    Без второго монитора заниматься разработкой - себя не любить(выход - ширик). Еще проблема двух мониторов в том, что крайне маловероятно их удастся абсолютно одинаково настроить по цветам и это раздражает.
    2. Переплачивать за данную функцию или выбирать отталкиваясь от неё - глупо. Главное покупать моник с VESA креплением. Выкидываешь родную ногу и покупаешь настольное/настенное крепление - профит. Сам юзаю NB F100A, хотя родная нога позволяла выше/ниже/наклон/поворот, иногда всё же нужно моник ближе/дальше двигать не упираясь в клаву.
    3. Есть в играх и крайне динамических сценах. 90гц очень рекомендуется, выше маркетинг.
    4. А если не в играх, то для чего? Браузить и кинцо смотреть? Думаю вполне себе потянет, но карта будет работать на 100%
    5. Что-то конкретное посоветовать в пределах бюджета сложно, однозначная рекомендация соотношение сторон 21:9, 32:9, 32:10 и IPS матрица. Герцовка и время отклика если в игры не играть, то абсолютно не важны.
    Ответ написан
    Комментировать
  • Как нарисовать линию от точки до точки?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    подключаем компонент LineRenderer
    public LineRenderer lineRenderer;
        // Start is called before the first frame update
        void Start()
        {
            lineRenderer.positionCount = 3; //указываем кол-во точек
            Vector3 firstPoint = new Vector3(0, 0, 0);
            lineRenderer.SetPosition(0, firstPoint); //номер точки и её положение
    
            Vector3 secondPoint = new Vector3(5, 5, 0);
            lineRenderer.SetPosition(1, secondPoint);
    
            Vector3 thirdPoint = new Vector3(15, 5, 0);
            lineRenderer.SetPosition(2, thirdPoint);
        }
    Ответ написан
    Комментировать
  • Компиляция под ios на unity, подводные камни, какой мак ос выбрать?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Для этого нужен в первую очередь аккаунт разработчика. Можно юзать Cloud Build, но для него всё равно понадобится акк разработчика + ключ от мака, так можно собирать из под винды. На самом деле нет большой разницы на чем собирать. Там из отличий в плане билда, были отличия только для старых планшетов/телефонов которые юзают Metal графу, с маками же никакой разницы, кроме производительности самого мака.
    Ответ написан
    Комментировать
  • Поворот персонажа в сторону движения Unity?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    А почему бы поворот влево/вправо не засунуть туда где непосредственно происходит чтение инпутов? Просто когда нажал кнопку влево transform.localscale.x =-1; а вправо наоборот соответственно
    Ответ написан
    Комментировать
  • Хотелось бы узнать есть ли какая нибудь база скриптов для игр типа 2d платформеров?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    Сейчас unity активно продвигает визуальный скриптинг. Попробуйте.
    Ответ написан
    Комментировать
  • Как исправить ошибку CS0246?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    После того как скачали, обновили текстуры с помощью самого Post Processing? После подключения пакета, нужно обновить материалы и тд, это делается в автоматическом режиме во вкладке Edit если я не ошибаюсь. А лучше детальнее изучите введение в Post Processing.
    Ответ написан
  • Как сделать проверку что персонаж стоит на земле?

    CHIDWI
    @CHIDWI
    Unity3D Developer
    bool isJump;
    
    private void Update()
    {
            if (Input.GetKeyDown("space") && !isJump) //проверка на нажатие кнопки и не находимся ли мы в прыжке сейчас
            {
    //вызываем прыжок AddForce или что там у вас.
                isJump = true; //помечаем флаг, что мы прыгнули
            }
    }
    
        private void OnCollisionEnter(Collision collision)
        {
            if (collision.gameObject.tag == "ground") //проверка что обьект столкновения имеет тег ground
            {
                isJump = false; //помечаем что мы столкнулись с землёй и можем снова прыгать
            }
        }
    Ответ написан