Ответы пользователя по тегу Unity
  • Как установить ссылку на экземпляр объекта в Unity?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Если этот "другой скрипт" один, то можно использовать паттерн синглтон.
    Ответ написан
    Комментировать
  • Как можно реализовать раздельную анимацию разных частей объекта в Unity 3d?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    На лодку (или другой родительский объект обеих весел) надо повесит аниматор, к нему прикрепить анимацию движения весел. Ведь из аниматора можно анимировать все дочерние объекты.
    Ответ написан
    Комментировать
  • Unity как организовать 3d наполнение параллелепипеда?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Если делаешь это например в unity, где это можно сделать быстро и удобно, то можно сделать 6 quad'ов, на каждый повесить свой материал соответствующего сечения. Если не нужно делать вариативность, то это нормальный вариант.
    Ответ написан
    Комментировать
  • Срабатывание TakeDamage?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Раскомментируй, проверь, есть ли на объекте со скриптом Health тег Player, убедись, что attackMask ты где-то назначаешь, ибо в коде я этого не вижу. Убедись, что проблема не в том, что радиус сферы мал. А еще обязательно надо в коде писать проверку твоего collision на null, иначе будет ошибка.
    Ответ написан
    Комментировать
  • Как экономить вычислительные ресурсы при отрисовке теней в unity?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Лагать может и не от теней. Лучше для начала посмотреть через профилировщик, что именно ест ресурсы. Если действительно окажется, что это тени, то можно понизить из качество в настройках проекта или запечь освещение.
    Ответ написан
    Комментировать
  • Почему объекты проваливаются в друг друга?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Видимо корявый коллайдер
    Ответ написан
  • Как выровнять размер спрайта по сетке?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Можно создать Image и в поле спрайт положить нужную картинку.
    Ответ написан
    Комментировать
  • Что делать если onWall не хочет проверятся?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Физика в Unity устроена так, что для проверки столкновений проверяются все объекты попарно, согласно матрице столкновений. Так вот, для работы OverlapCircle и других методов для работы с физикой требуется rigidbody (или в твоем случае rigidbody2d) хотя бы на одном из объектов пары. А еще возможно, что у тебя в матрице столкновений (Edit->ProjectSettings->Physics2D в самом низу) отключено пересечение слоев этих объектов.
    Ответ написан
    Комментировать
  • Как действует agent.SetDestination?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    agent.Stop() или agent.SetDestination(agent.transform.position) для остановки агента.
    Ну для этого нужен обычный OnTriggerEnter или OnCollisionEnter. Дальше определяем, агент это или нет через GetComponent и меняем цель.
    Ответ написан
    Комментировать
  • Как реализовать Спавн обьекта в двух случайных позициях?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Как вариант выбирать случайный элемент из массива позиций.
    var positions = new Vector3[2] { new Vector3(10, 0, 0), new Vector3(-10, 0, 0)};
    Vector3 platformPosition = positions[Random.Range(0, positions.Length)];
    var _instantiate = Instantiate(_prefab, platformPosition, Quaternion.identity);
    Ответ написан
    Комментировать
  • Как перемещать персонажа относительно локальных координат?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    _moveVector = tranform.forward;
    _moveVector += new Vector3(_joystick.Horizontal * _speedMove, 0, _joystickVertical * _speedMove);

    P.S.: никогда, НИКОГДА не присылай скриншоты кода. Всегда надо кидать сам код, чтобы было удобнее его редактировать!
    Ответ написан
  • Как отслеживать переменную в момент когда игра свернута?

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

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Ну просто напишите условие, что если игрок умер, то включать экран поражения, если враг - то нет. Для этого либо создавать отдельный скрипт для игрока и врагов, либо же при вызове метода TakeHit указывать, кто именно вызывает его.
    Ответ написан
    2 комментария
  • Как следать плавный слайдер в Unity?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Ну я поздравляю, что нужно. А конкретно? Как это должно выглядеть? Сам-то не пробовал сделать?
    Ответ написан
    Комментировать
  • Можно ли из скрипта одного объекта включить анимацию другого объекта?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Поднятие предмета лучше делать в скрипте игрока. Так и читабельнее будет, и проблему решит.
    Ну а анимации другого объекта действительно вызываются через GetComponent.
    Ответ написан
  • Как увеличить точность в навмеше?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    1. Да, можно. В настройках NavMeshAgent. Но для решения конкретно этой проблемы надо уменьшить радиус NavMeshAgent и уменьшить VoxelSize в NavMeshSurface (в разделе Advanced), тогда будет нормально.
    2. Да, можно. Там есть параметр высота и радиус. Соответственно, если поставить высота = радиус, то будет шар. Но куб, например, поставить нельзя
    3. Просто сохранить сцену. Обязательно не забывай запекать surface.
    4. На этом объекте должен быть компонент NavMeshObstacle
    Ответ написан
    8 комментариев
  • Как сделать автопилот для машины в Unity3D?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Самый простой и быстрый вариант - использовать Path Creator Asset. Это ассет для создания векторных путей, как раз как Вам надо. Ассет бесплатный. Но я не уверен, что он подойдет для Вашей системы авто.
    Есть другой вариант. Он более сложный и долгий, но может быть более гибким. Можно создать список точек, далее перемещать машину между текущей и следующей точкой.
    Но есть и третий вариант - это использование технологии нахождения ближайшего пути. То есть использование встроенного в Unity Nav Mesh. Он не позволит так просто менять маршрут, но для некоторых смежных целей подоедет.
    Ответ написан
    Комментировать
  • Как телпортировать камеру при приближении к объетку?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Что именно не работает? Объявлен ли pos в инспекторе? Висит ли на объекте с этим скриптом триггер и rigidbody? Причем на камере и коллайдер и rigidbody (если последнего нет на телепорте) также должны присутствовать. Совпадает ли название скрипта TELEPORT с названием скрипта? Повесили ли Вы данный скрипт на объект?
    50% успеха - это правильный анализ. Никто Вам не скажет, что тут не так, пока вы не расскажите, в чем именно заключается проблема. Можете использовать дебаггер, в крайнем случае выводить в консоль, но не вслепую тыкать, надеясь, что заработает.

    P.S.: еще немного советов по поводу данного кода. Я не советую использовать Camera.main, т.к. это довольно
    требовательная функция. Можно в Start закэшировать камеру, а затем ее использовать. Ну и, конечно, не следует называть скрипты капсом - это не очень читабельно.
    Ответ написан
    Комментировать
  • Нужно ли отделять аниматор от остальной логики персонажей?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Так повышается читабельность, ведь если тебе нужно подкорректировать логику перемещения персонажа ты идешь в один скрипт, если анимации, то в другой, если систему здоровья, то в третий и так далее. Это не влияет на скорость выполнения (а если и влияет, то крайне незначительно), но разработчикам проще.
    Ответ написан
  • Как сделать показ наград выбитых из сундука?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Просто сделай префаб для "карточки" (элемента), из кода его создавай в нужном месте, меняй параметры и все. Можно это сделать в цикле, там же на основе текущего индекса менять позицию
    Что-то вроде:
    [SerializeField] Item itemPrefab;
    [SerializeField] Transform Canvas;
    Item[] itemsGot;
    void DrawAll()
    {
     for (int i = 0; i < itemsGot.Length; i++)
     {
     Item item = Instantiate(itemPrefab, new Vector2(300 + i*80, 500), Quaternion.identity, canvas).GetComponent<Item>();
     item.params = itemsGot[i].params;
     }
    }
    Ответ написан
    2 комментария