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

    @vovo801
    Freelance Unity3d/C# Developer
    Самое лучшее что видел на эту тему - есть tutorial Lynda - Unity 4 2D Essential Training.
    Пока что есть на Ютуб. Вот видео:
    https://www.youtube.com/watch?v=0VBIc7NZq9E&hd=1
    Там надо установить размер юнитов такой как размер тайлов в пикселах: тайлы 100х100 значит юниты 100 пикселов.
    Потом добавляется 1 тайл, трансформ позиция задается (0,0,0).
    А потом в туториале чувак держит кнопку V на клавиатуре - говорит что это отвечает за Vertex Snapping и вручную ставит тайлы.
    Ответ написан
    Комментировать
  • Как реализовать смену языка в игре?

    @vovo801
    Freelance Unity3d/C# Developer
    Обычно делают XML файл, в котором хранятся фразы из игры на всех языках, а потом из него подтягивают все варианты.
    Прямо туториала по этому вопросу я не нашел, но вот пару ссылок:
    1) forum.unity3d.com/threads/add-multiple-language-su...
    Тут человек сам написал и предлагает бесплатно скачать код. который обеспечивает поддержку нескольких языков в его игре (рассчитано для Юнити, но принцип тот же и для других движков)
    2) https://docs.google.com/spreadsheet/ccc?key=0Al1cN...
    Вот мегаполезная по-моему ссылка. Тут документ с переводом некоторых популярных фраз, которые часто встречаются в играх и приложениях на разные языки.
    Ответ написан
    2 комментария
  • Как заставить объект динамически двигаться за другим в 2D (Unity)?

    @vovo801
    Freelance Unity3d/C# Developer
    Можно для начала попробовать пару готовых скриптов типа Smooth Camera Follow.
    Например:
    answers.unity3d.com/questions/29183/2d-camera-smoo...

    Пользоваться просто. Скрипт вешается на то, что должно следовать за другой штукой, а ссылка на то, за чем надо следовать помещается в поле target в Инспекторе.

    Лучше не двигать таким образом объект, на котором уже есть Rigidbody. Тогда будет вибрация.

    Чтобы сохранить дистанцию, можно в код из примера вставить простой if оператор
    Vector3 delta = target.position - camera.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z));
    if (delta. magnitude > someValue)
    {
            Vector3 destination = transform.position + delta;
            transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime);
    }


    UPDATE: Прочитал еще раз - на счет отставания хотел написать. Можно поиграться с dampTime -
    в зависимости от этого значения, объект будет двигаться за целью плавно или быстро. Можно установить так, чтобы было плавное движение, то есть догонит если долго подождать, но включить код -
    Vector3 delta = target.position - camera.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z));
    if (delta. magnitude < someValue)
    {
            Vector3 destination = transform.position + delta;
            transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime);
    }

    Разница с тем, что я раньше писал - только в знаке, не > somevalue, a < somevalue, то есть следовать только если объект находится близко. Тогда можно будет от него убежать и он следить перестанет.
    Первый вариант когда > someValue подходит для спутников, которые будут следовать, но не надо чтобы они "залезли" на персонажа. А второй - для врагов - будут преследовать, пока мы от них не убежим на безопасное расстояние. Надо только в начале класса будет объявить:
    public float someValue; // дистанция слежения.
    Вообще лучше диапазон сделать - между двух значений.
    Ответ написан
    1 комментарий
  • Какие курсы/учебные материалы по Unity 3D\2D?

    @vovo801
    Freelance Unity3d/C# Developer
    Есть конторка - называется 3DBuzz - у нее есть куча полезных курсов по Юнити.
    Парочку доступны на Ютуб. Вот отличный курс по Unity UI:
    https://www.youtube.com/playlist?list=PLt_Y3Hw1v3Q...
    А вот про написание платформеров:
    https://www.youtube.com/playlist?list=PLt_Y3Hw1v3Q...
    А вот их канал собственно:
    https://www.youtube.com/user/3DBuzz/featured

    Еще есть сайт Lynda.com. Там куча полезной инфы по Юнити.
    Я смотрел вот эти 2 курса:
    www.lynda.com/Unity-2D-tutorials/Unity-5-2D-Essent...
    www.lynda.com/Unity-2D-tutorials/Unity-4-2D-Essent...

    Второй, который называется Unity 4 2D Essential Training очень рекомендую. Супер полезный курс.
    Я больше по 2d, как понимаете))
    Ответ написан
    Комментировать
  • Платформа для рисования изображений для Unity3D?

    @vovo801
    Freelance Unity3d/C# Developer
    Я больше по 2д. Вопрос не в чем, а как. Для 2д хорошо подходит Photoshop, но любой другой редактор тоже сойдет. Чтобы не терять в качестве сохраняете в png, a не в jpeg.
    Для того, чтобы было проще анимировать есть пару подходов. Мой любимый - порезать изображение персонажа по частям. а потом собрать воедино в Юнити и анимировать в Mecanim движение этих частей относительно друг друга. Можно поискать что то типа Unity Bone Based Sprite Animation в Google, будет много хороших результатов. Для облегчения есть много разных ассетов, которые помогают организвать процесс анимации по частям.
    Вот пример того, что понравилось:
    https://www.youtube.com/watch?v=1Oyk-P-VzRM&hd=1
    Ответ написан
    Комментировать
  • Почему происходит некорректное освещение уровня после загрузки?

    @vovo801
    Freelance Unity3d/C# Developer
    Поправил мой ответ.
    Отсюда:
    answers.unity3d.com/questions/919940/applicationlo...

    The fix is to go to Window -> Lighting -> Lightmap Tab -> Disable Continuous Baking -> Press Build to bake the lighting once manually. And now the lighting remains consistent. Original: forum.unity3d.com/threads/application-loadlevel-ap...

    Надеюсь это поможет.
    Ответ написан
  • Как передвинуть сгруппированые меши ...?

    @vovo801
    Freelance Unity3d/C# Developer
    Как вариант - заведите для этого всего объекта тэг. Когда будете ставить тэг - ставьте его на Ваш куб (то есть на главный объект). Оно предложит поставить на все чайлд объекты. При заходе в Ваш телепортатор - проверяйте какой тэг на том, что в него залезло. Если это ОНО - то на чем тэг)) - перемещайте все сразу.
    Вариант второй - заумный. Можно создать отдельный слой (Layer) и отключить его в настройках физики, чтобы он не контактировал ни с чем, поставить этот слой на Ваш триггер коллайдер в телепорте. Теперь на каждый объект, который должен телепортироватся можно прицепить 1 такой коллайдер - допустим, сферу или куб - что больше подходит, который будет просто покрывать весь объект.
    Таким образом - как бы отделили физику от телепортирования. Все телепортирование будет на отдельном слое детектиться. Я подобное делал в одном своем проекте. Извините за заумность. Если что, могу подробнее описать.
    Ответ написан
  • Как сделать чтобы Text mesh не просвечивался сквозь другие объекты?

    @vovo801
    Freelance Unity3d/C# Developer
    Возможно, проблема с SortingLayer? Хотя его может быть и не видно на самом скрипте TextMesh, он все равно влияет на порядок расположения.
    Подобное обсуждалось тут: answers.unity3d.com/questions/595634/3d-textmesh-n...
    Вот скрипт, который я использовал чтобы смотреть на всех объектах SortingLayer:
    https://gist.github.com/nickgravelyn/7460288
    Ответ написан
    Комментировать
  • Как правильно сгенерировать игровое поле?

    @vovo801
    Freelance Unity3d/C# Developer
    Смотря какая сложность игры и что потом будет происходить. Я недавно сделал простую игру типа 2048 целиком на UnityUI. То есть у меня есть только Canvas и все что есть в игре сделано при помощи UI. Там есть для построения сеток GridLayoutGroup.
    Нашел такой крутой скрипт и использовал его вместо GridLayoutGroup: www.justapixel.co.uk/ugui-auto-scaling-grid-layout-code
    По сути тоже помогает организовать сетку, только этот еще и растягивает по размеру в зависимости от размера Canvas.
    Если это не подходит, можно для каждого тайла создать Canvas, перевести в WorldSpace и показывать на нем GUI Text. На счет производительности такого решения не знаю, но по идее все должно получиться.
    Забыл написать - есть еще TextMesh. Тоже подходит для отображения текста. Самое простое в Вашем случае по - моему. А никто еще не предлагал его.
    Ответ написан
    1 комментарий
  • Возможно ли в Unity 5, прикрепить Particle System к Event System?

    @vovo801
    Freelance Unity3d/C# Developer
    Это делается не совсем так. EventSystem лучше для этого не задействовать.
    Есть замечательный видеокурс по Unity UI от 3DBuzz.
    Вот ссылка: https://www.youtube.com/watch?v=4d_l9OmLYTE&list=P...
    В этом видео https://www.youtube.com/watch?v=QxRAIjXdfFU&index=... делается что то подобное.
    Там автор добавляет частички которые как бы пролетают перед камерой когда видно меню.
    В настройках Canvas устанавливается ScreenSpace - Camera и в качестве RenderCamera ставится твоя Main Camera. Потом можно вручную менять порядок Particle System и UI так, чтобы частички были перед UI. Видео на английском, но там в принципе все понятно.
    Ответ написан
    1 комментарий
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @vovo801
    Freelance Unity3d/C# Developer
    Input.GetAxisRaw ("Horizontal");
    Это надо делать в Update или FixedUpdate.
    public void Walk(int InputAxis)
      {
        float move = Input.GetAxisRaw ("Horizontal");
    
        move = InputAxis;


    Тут получается Вы Axis значение получили. а потом перекрыли его аргументом из метода InputAxis. Так Ваша переменная move будет всегда равна InputAxis.

    Еще - в примере кода не видно где Вы вызываете метод Walk()
    Без собственно вызова этого метода ничего не будет работать.

    Я бы попробовал так:
    void FixedUpdate () {
               Walk(Input.GetAxis("Horizontal"));
      }


    А строку
    float move = Input.GetAxisRaw ("Horizontal");
    из метода Walk можно смело удалять, все равно вы потом move присваиваете значение InputAxis.
    Ответ написан
    Комментировать
  • Не работает переход анимации на 2d платформере под android, unity 5?

    @vovo801
    Freelance Unity3d/C# Developer
    Первое что попалось на глаза - должно быть:
    anim = GetComponent ();
    rb2d = GetComponent();

    Второе: есть ли вообще аниматор и анимации на этом объекте? Может аниматор не на этом объекте, а на его child object? Чтобы проверить нашло ли аниматор можно кликнуть правой кнопкой на названии вкладки Инспектор и перевести в режим Debug. Тогда будут отображаться все переменные Вашего CharacterController, включая аниматор и там посмотреть, нашла Unity его или нет.

    Есть еще много моментов, которые могут повлиять.
    методом удаления различных команд, понял, что именно эта строка отвечает за изменение анимации. Вставил её в скрипт =>

    А как Вы поняли что эта строка влияет если анимация не заработала? Какие то другие признаки, ошибки в консоли были?
    Ответ написан
    Комментировать