Ответы пользователя по тегу 2D
  • Как рассматривать время корутина относительно второго корутина?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Создайте корутину, что будет запускать другие корутины, и если надо, ждать от них ответа, когда они закончили работу.
    Ответ написан
  • Как удалить объект из массива в Unity 2D?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Просто используйте список, List<>. Пример:
    using System.Collections.Generic;
    ...
    public List<GameObject> enemies;
            ...
            Destroy(enemies[i]);
            enemies.RemoveAt(i);
            var enemiesLeft = enemies.Count;
            ...
    Ответ написан
  • C# код улучшения персонажа в Unity. Поможете?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    1.
    как сделать так, чтобы он активировался когда персонаж появляется?

    Зависит от механики появления персонажа. Если я правильно понял вопрос, то например в Start() у персонажа написать (ну либо вызвать по нажатию кнопки):
    FindObjectOfType<UpButtonHelper>().IsHero = true;.

    2.
    Сразу бросается в глаза потенциальная ошибка здесь:
    if (!IsRuby && _gameHelper.PlayerGold >= Price || IsRuby && _gameHelper.PlayerRuby >= Price)

    Наверное вы хотели сделать так:
    if ((!IsRuby && _gameHelper.PlayerGold >= Price) || (IsRuby && _gameHelper.PlayerRuby >= Price))


    В остальном - мне тяжело понять задуманную вами логику, как-то всё в кучу навалено. Попробуйте разбить все действия по методам, с полными названиями, может и вам станет понятней, что к чему. Скажем, чтобы получилось что-то вроде:
    ...
    var goldWasSpent = !IsRuby && _gameHelper.PlayerGold >= Price;
    
    if(goldWasSpent || rubyWasSpent)
    {
      if(heroIsPresent)
        IncreaseHeroDamage();
      else
        CreateHero();
    }
    Ответ написан
  • Как сделать следование объекта за курсором мыши?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Я делаю иначе, чтобы избежать лишних рассчетов:
    - создаете вспомогательный объект, что смотрит на курсор с помощью Transform.LookAt;
    - далее двигаете основной объект в направлении КУРСОРА с помощью Vector3.Lerp или Vector3.SmoothDamp;
    - для поворота на угол ВСПОМОГАТЕЛЬНОГО объекта можно примерить Quanternion.Lerp или Quanternion.Slerp;
    - ну и ограничиваете поворот по каким-либо их осей, если нужно.
    Ответ написан
  • Какой ПК нужен для комфортной работы в Unity2D?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    При сборке билда и при сборке библиотеки проекта Unity использует все ядра. На слабом ПК (проц) открытие реально большого проекта (в первый раз, сборка библиотеки) может занять несколько часов. В остальном в работе нагрузка обычно не большая.

    Видеокарта - зависит от того, что именно разрабатывать будете. В остальном любая среднего уровня подойдет более чем.

    В целом, чем мощней ПК (проц, память и SSD в первую очередь), тем вам комфортней и быстрей получится работать.
    Ответ написан
  • Как решить непонятную проблему со спрайтами в Unity 2D?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Unity по умолчанию сжимает, конвертирует всю графику в проекте, чтобы снизить размер и потребление памяти в финальном приложении. При этом часто теряется определенная информация, цвета или детали на изображениях.
    Как и в вашем случае.

    Подбирайте подходящее для вас сжатие в Unity. Либо используйте графику без сжатия, но в таком случае следите за потреблением памяти приложением.

    Ну и пример:
    5d1be859922e9259616947.png
    Ответ написан
  • Какая графика проще в освоении пиксельная или векторная?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Как умеете, так и делайте. Не умеете никак - тогда без разницы, все равно учить придестся или одно или другое. А тогда все упирается в вопрос - а что вам (вашему проекту) лучше подойдет в итоге, какой стиль графики?

    Еще по теме:
    Растр в большом разрешении или вектор для казуальн...

    Рекомендую перед тем, как учить что-то, найти художника, хоть с каким-то опытом, и с ним поговорить, посмотреть, как он работает и что получается.
    Ответ написан
  • Unity C# - Как сделать перезапуск уровня при падении персонажа в пропасть?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Ну уровень то вам не обязательно выгружать и загружать заново. Просто верните по событию "персонаж упал" все величины в нужных скриптах на стартовую позицию. То есть, конечно надо учесть в скриптах, что они могут быть "сброшены" на начальное значение, создать метод сброса или задавать переменным значения на Start() а после его вызывать.

    PS: для проверки упал ли, можно разместить Collider, Trigger и при соприкосновении, OnTriggerEnter(), вызывать метод перезапуска уровня (сброса параметров).

    Вот какое-то видео на эту тему, но наверное можно найти и посвежей https://youtu.be/OcmqVmg28F0

    Более простой вариант - проверять по высоте, если объект сместился ниже определенного уровня, значит упал.
    Ответ написан
  • Растр в большом разрешении или вектор для казуальной игры?

    DanceM
    @DanceM
    Кто хочет -ищет способ, кто не хочет -ищет причину
    Рисуйте так, как удобно. Умеете вектором - супер! Требуется растр - пускай будет 4096 или даже 8192, с заделом на будущее ;)

    А можно использовать комбинированный способ - контуры и четкие грани в фотошопе векторными масками определять, а остальное наполнение растром - мягкой кистью и градиентами, как обычно. Я так и делаю. Тогда если надо масштабировать, контуры всегда четкие, при любом размере, а наполнение растягивается практически без пикселизации, т.к. четких деталей там не будет изначально.
    Да, это не полноценный "вектор", но лично мне так работать нравиться больше, быстрее.

    Например:
    c484e46fb169459f9413124a8a4495bc.pngb0c9411e4f944ced98c78f56e7066a1f.png
    Ответ написан
  • Причина дерганий перемещения на Unity3D?

    DanceM
    @DanceM Куратор тега Unity Game Engine
    Кто хочет -ищет способ, кто не хочет -ищет причину
    К сожалению (или к радости) в вашем проекте рывков не обнаружил ни на Android (девайсы SG6E+, SGS4, SGS3), ни в Windows билде (на двух машинах проверил, как в оконном режиме, так и полный экран).

    В редакторе - да, рывки есть, но думаю ему простительно.

    Под виндой рывки у меня бывает проседает фпс с 60 до 59 раз в несколько секунд. Но как оказалось, если закрыть Chrome то все ок. Но это касается всех приложений (игры и т.п.).

    В видео "другого человека" может быть совсем иная ситуация - например, я вижу, что у него Vsync выключен. И/или может просто не хватать производительности устройства. Либо в коде что-то не так.
    Ответ написан