Как сделать лестницу в юнити

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Unity поддерживает текстурированные 3D модели, созданные в различных программах. Это краткое руководство было создано игровыми художниками и разработчиками в Unity, чтобы помочь вам в создании ассетов, которые будут работать лучше и эффективнее в вашем Unity проекте.

Масштаб и единицы измерения

  • Установите единицы измерения системы и проекта в вашем программном обеспечении для согласованного использования с Unity, например, метрические.
    • Работа в правильном масштабе может быть важна как для освещения, так и для симуляции физики.
    • Учтите, что, например, в Max единицы по умолчанию - дюймы, а в Maya - сантиметры.
    • В Unity масштаб импортируемых FBX и файлов 3d приложений - разный; проверьте настройку масштаба импортируемого FBX в инспекторе.
    • Если вы сомневаетесь, экспортируйте метрический куб (куб с длиной ребра в 1 метр) с вашей сценой для сравнения с встроенным в Unity метрическим кубом.

    Файлы и объекты

    • Моделируйте с эффективной топологией. Используйте полигоны только там, где они необходимы.
    • Оптимизируйте вашу геометрию, если она содержит слишком большое количество полигонов. Многие модели персонажей должны быть грамотно оптимизированы или даже пересобраны художником, особенно если они получены/собраны из:
      • Данных 3D захвата
      • Poser
      • Zbrush
      • Других высокоплотных Nurbs/Patch моделей, предназначенных для рендера

      Метод, который вы используете для сборки объектов может значительно влиять на количество полигонов, особенно, если не производить оптимизацию. На изображении выше показан один и тот же shape меш, со 156 треугольниками справа и 726 слева. 726 может звучать не так серьёзно, когда речь идёт о полигонах, но если такой меш использован на уровне 40 раз, вы начнёте замечать разницу. Хорошее правило для применения на практике - начинать с простого и затем добавлять детали по мере необходимости. Всегда проще добавить полигон, чем удалить.

      Если вы создаёте текстуры с размером, кратным степени двойки (напр., 512x512), текстуры будут более эффективны и не потребуется изменение их масштаба во время сборки проекта. Вы можете использовать до 4096x4096 пикселей (хотя на некоторых видео картах и платформах максимально возможный размер - 2048x2048). Поищите в сети советы экспертов по созданию хороших текстур. Некоторые из этих советов могут помочь вам в получении наиболее эффективных результатов в вашем проекте:

      • Работайте с исходным файлом высокого разрешения вне проекта Unity (напр., PSD или файл Gimp). Вы всегда можете отмасштабировать размер исходной графики в меньшую сторону, но не наоборот.
      • Используйте требуемое в сцене разрешение для текстур (сохраните копию, например оптимизированный 256x256 PNG или TGA файл). Вы можете судить по тому, где будет отображаться текстура и где она будет видна.
      • Храните файлы текстур в одном месте в вашем Unity проекте (например: \Assets\textures).
      • Убедитесь, что ваш рабочий файл с 3D контентом ссылается на эти текстуры для сохранения целостности при сохранении / экспорте.
      • Используйте свободное место в вашей текстуре, но учтите, что разные материалы могут работать с разными частями одной и той же текстуры. Это может привести к многократному использованию / загрузке этой текстуры.
      • Разделяйте текстуры для альфы (cutout) и элементов, которые могут обрабатываться различными шейдерами. Например, одиночная текстура, показанная ниже (слева) была заменена тремя меньшими по размеру текстурами (справа).
      • Используйте тайлинг текстуры (те, которые могут повторяться бесшовно), тогда вы сможете использовать более высокое разрешение на повторяющихся участках.
      • Удаляйте из вашего изображения повторяющиеся элементы, которые легко заметить и будьте осторожны с контрастностью. Если вы желаете добавить деталей, используйте декали и объекты для разряжения повторений.
      • Unity заботится о сжатии для целевой платформы, так что, если ваш исходный файл уже не является JPG верного разрешения, лучше использовать lossless формат для ваших текстур.
      • При создании текстуры из фотографии, уменьшайте её используя отдельные модульные секций, которые могут повторяться. Например, вам не нужны 12 одинаковых окон, использующих текстурное пространство. Таким образом, вы можете иметь больше деталей на пиксель для этого одного окна.
      • Организуйте и именуйте материалы в вашей сцене. Таким образом вам будет намного проще редактировать ваши материалы в Unity после импорта.
      • Вы можете выбрать создание материалов в Unity из:
        • имя материала> либо: or
        • - убедитесь, что вы знаете, какой из вариантов выбрать.
        • Diffuse цвет, Diffuse текстура и имена обычно поддерживаются
        • Shader model, specular, normal, другие вторичные текстуры и настройки субстанций не будут опознаны/импортированы (должно появиться в Unity 3.5)

        Unity может использовать два типа файлов: сохранённые файлы приложений для 3D моделирования и экспортированные 3D форматы. Выбор в пользу одного из них может быть довольно важен:

        Сохранённые файлы приложений для моделирования

        Unity может импортировать путём конвертации: файлы Max, Maya, Blender, Cinema4D, Modo, Lightwave & cheetah3D, напр., .MAX, .MB, .MA и т.д. см. раздел Импортирование объектов для дополнительной информации.

        Преимущества:

        • Быстрый итеративный процесс (сохраняете изменения и Unity их “подхватывает”)
        • Изначально просто

        Недостатки:

        • Лицензионная копия программы (чей формат используется) должна быть установленна на всех машинах, на которых используется проект Unity
        • Файлы могут быть неоправданно большими из-за ненужных данных
        • Большие файлы могут замедлить “живое” обновление Unity
        • Меньше проверок и сложнее отлаживать поблемы

        Экспортированные 3D форматы

        Unity также может читать FBX, OBJ, 3DS, DAE & DXF файлы. Для подробного руководства по экспорту, вы можете обратиться к этому разделу.

        Zivert - CRY | Премьера клипа

        04:24

        LOBODA - Americano (Премьера сингла, 2021)

        03:31

        Баста – Любовь и страх (feat. Дворецкая)

        05:41

        Ozoda - Esla Meni (Offıcıal Clıp 2021)

        05:02

        Султан Лагучев - Cкучает осень (премьера 2021)

        02:29

        Oliver Tree & Little Big - The Internet [Music Video]

        03:36

        Coldplay X BTS - My Universe (Official Video)

        04:43

        Возникла проблема с системой строительства в Unity2D, скрины с объектов инспектора:

        Скрины с инспектора

        Код скрипта тайлмапа:

        Код скрипта строения:

        Здание выбирается по кнопке, летает за курсором, но возникла проблема с его постановкой.

        При нажатии на кнопку здание ставится (сразу под кнопкой) и тут же создаётся новое вместо того, чтобы старое просто уничтожалось. Как понял, здесь нужно использовать Ray2D или RaycastHit2D, но мне не хватает навыков (в гугле не забанили, но не нашёл решения).

        Я работаю в Unity в игре с первым человеком и наткнулся на какую-то особенность, которую я хочу добавить: скалолазные лестницы. Тем не менее, я был неудачным в кодировании этого до сих пор (кстати, я использую javascript). Ниже приведен сценарий, который я должен проверить на столкновение с лестницей, которая не работает:

        Наверное, немного опаздываю на вечеринку, но здесь я иду.

        Вы всегда можете создать триггерную лестницу, которая применяет движение вверх, когда контроллер движется вперед.

        Я опубликовал запись в блоге, объясняющую (без кода), как я начал реализовывать простые лестницы в старом демонстрационном видео, которое также видно на этом посту.

        Надеюсь, это поможет кому-то.

        Поскольку этот скрипт ищет столкновение с лестницей, я предполагаю, что скрипт находится внутри символа. Если скрипт находится внутри вашей лестницы, ну. там проблема: P

        В любом случае, если это находится внутри вашего персонажа, и вы, вероятно, используете CharacterController для его перемещения, то OnCollisionEnter не будет запускаться. Вам нужно использовать OnControllerColliderHit(collider:Collision) <. >и поместить в него обнаруженные столкновения.

        Здесь я могу сказать две вещи.

        1. Используйте CharacterController.OnControllerColliderHit, как предложил Стивен Миллс, но обратите внимание, что параметр, передаваемый в функцию, фактически является ControllerColliderHit .
        2. Вместо проверки имени коллайдера сравните Tag GameObject . Все, что вам нужно сделать, это назначить один и тот же тег, пусть говорят "Лестница", для каждого GameObject который вы хотите использовать.

        Я бы порекомендовал посмотреть ссылку выше для получения дополнительной информации. Это связано с тем, что вы, вероятно, захотите выполнить дополнительные проверки, например, когда игрок сталкивается с лестницей. Это потому, что вы можете не захотеть подниматься по лестницам со стороны лестницы (если, конечно, если лестница - это веревка или что-то подобное). Вам также понадобится способ сказать, что игрок закончил подниматься/опускаться по лестнице. Вы, вероятно, не хотите, чтобы все еще поднимались по лестнице, когда ваши ноги выше ее;). Надеюсь это поможет!

        Этапы разработки игры

        Есть много способов разработки проектов, много вариантов этапов, на которые можно разделять этот процесс. Например, вот этот:
        Этапы разработки игры

        Альфа — команда разрабатывает концепцию (т. е. начальное описание) нового проекта.

        Пре-продакшн — разрабатывается прототип проекта.

        Софт-ланч — прототип проекта расширяется командой разработки до полноценной версии игры в соответствии с составленным планом и проектной документацией. Этап заканчивается выпуском ранней версии игры. Обычно такая версия содержит 30–50% от полного количества игрового контента и отличается от предыдущих технических версий большой стабильностью работы и малым количеством ошибок.

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

        Поддержка — формируется команда поддержки (как правило, это часть команды разработки) для выпуска последовательных обновлений с учётом статистики. Продюсер продолжает работу на проекте в качестве консультанта, перекладывая основные задачи на гейм-дизайнеров команды поддержки.

        В этой статье мы разберем этап пре-продакшна или создания прототипа.

        Примитивные объекты

        Unity может работать с 3D моделями любой формы, создаваемыми в приложениях для моделирования. Однако, существует ряд примитивных моделей, которые можно создать прямо в Unity: Куб (англ. — Cube), Сфера (англ. — Sphere), Капсула (англ. — Capsule), Цилиндр (англ. — Cylinder), Плоскость (англ. — Plane) и Квад (англ. — Quad). Эти объекты часто применяются как есть (плоскость обычно используется в качестве поверхности земли, например), но также они позволяют быстро создать прототипы сложных объектов в целях тестирования. Любой из примитивов может быть добавлен в сцену с помощью соответствующего пункта в меню GameObject → Create 3D Object. Для прототипирования очень удобно использовать кубы и цилиндры 👐

        Куб

        Это простой куб. Сам по себе куб не так часто встречается в играх, но если изменить его размеры, то его можно использовать в качество стен, столбов, коробок, ступенек и других аналогичных предметов. Для разработчиков, куб — удобная замена итоговой модели, если она ещё не готова. Например, кузов автомобиля может быть грубо представлен в виде вытянутого до нужных габаритов куба. Вполне подходит в качестве заготовки для тестирования кода управления автомобилем 🚘

        Куб

        Куб

        Сфера

        Сферы полезны для создания ⚽ мячей, 🌏 планет или 💣снарядов.

        Сфера

        Сфера

        Капсула

        Капсула — это цилиндр с полусферическими колпаками на концах. Хоть в реальном мире и не так много объектов с такой формой, капсулу тоже удобно использовать для прототипирования. Например, в некоторых задачах физика закруглённого объекта предпочтительнее, чем физика прямоугольного.

        Капсула

        Капсула

        Цилиндр

        Цилиндры удобно применять для создания столбов, труб или колёс.

        Цилиндр

        Цилиндр

        Плоскость

        Плоскость удобна для отображения картинок и видео в GUI, и для различных спецэффектов. Хоть плоскость и может использоваться для описанных выше вещей, более простой примитив квад чаще подходит для таких задач.

        Плоскость

        Плоскость

        Квад

        Примитив квад аналогичен плоскости, но он состоит только из двух треугольников, в то время как плоскость — из двухсот. Квад будет полезен, если в сцене требуется создать экран для вывода изображений или видео. С помощью квадов можно создать простые информационные и GUI экраны, а также частицы, спрайты и “обманные” изображения для имитации удалённых больших объектов.

        Квад

        Квад

        Прототипирование

        Прототип

        Прототип

        Когда ты и твоя команда решите, что идея игры (концепция) готова и уже не терпится в нее поиграть, следующим шагом для вас будет — создание прототипа.

        Прототип — это упрощенная модель игры (чего угодно), с помощью которой можно проверить: интересно ли в нее играть и стоит ли продолжать разработку.

        Чтобы не тратить много времени на подготовку прототипа, его обычно собирают из примитивных объектов, используя готовые компоненты игрового движка: кубы, цилиндры, физику движка, готовые контроллеры для управления игроком и подобные полезные вещи. Уровень собирается буквально из серых кубиков.

        На этапе прототипирования в здоровой команде или компании важно придерживаться правила “Failure is an Option”. Вы делаете прототип, оцениваете результат и, если он вас не устраивает, выбрасываете. Быстрые итерации позволяют эмоционально не привязываться к проделанной работы, поэтому процесс получается простым и приятным. Чаще всего в самом начале даже вообще не используют игровой движок:

        Достань себе блокнот либо альбом для рисования. Нет никакой необходимости думать о качестве зарисовок — любой может рисовать при помощи простых линий и форм достаточно хорошо, чтобы это помогло в планировании. Если зарисовка готова, то можно приступать к работе с игровым движком.

        Создание и редактирование примитивного объекта

        Как ты уже знаешь, чтобы создать объект, в меню нужно выбрать GameObject → Create 3D Object. Для того, чтобы перемещать игровой объект, тебе понадобится Панель инструментов.

        Панель инструментов

        Панель инструментов

        Часто требуется переключаться между инструментами, поэтому запомни горячие клавиши, которые чаще всего используются:

        1. W — кнопка перемещения объекта. Если во время перемещения удерживать кнопку V, то один объект можно примагнитить к другому объекту.
        2. E — кнопка вращения объекта.
        3. R — кнопка изменения размера объекта.

        С помощью линий, которые появляются, когда ты выбираешь объект, ты можешь изменять свойства его компонента Transform. Transform отвечает за позицию, разворот и размер. Используя разные примитивные объекты, изменяя их размеры, перемещая и разворачивая, можно сделать прототип практически любого объекта. Например, моста:

        Prefabs

        Если ты посмотришь в Иерархию, после того как сделаешь мост, то увидишь, что в ней отображается уже 11 объектов! И это только мост, камера и освещение. Представь, что будет, если ты запрототипируешь целый уровень… Ориентироваться в сцене будет очень тяжело. Поэтому для упрощения принято объединять несколько объектов и сохранять их, как prefab’ы.

        Prefab — это игровой объект, который может состоять из нескольких игровых объектов. Все копии prefab’а на сцене можно легко и быстро редактировать, что очень сильно упрощает работу дизайнера уровней.

        Первое, что нужно сделать объединить объекты в один. Очень удобно для этого использовать Пустой объект (англ. — Empty). Размести его в центре будущего prefab’а:

        Пустой объект в центре моста

        Пустой объект в центре моста

        Теперь выбери все нужные объекты для объединения, кроме Empty(!), в Иерархии и перетащи их в Empty:

        Теперь Empty принято называть родительским объектом по отношению к объектам, из которых состоит мост, а сами эти объекты называют дочерними.

        Но прежде, чем ты начнешь копировать свой объект, его стоит сохранить в окне Проект. Для этого выбери, только что переименованный, Bridge левой кнопкой мыши и, не отпуская, перетащи его в окно Проект. Вот теперь можно сказать, что ты создал свой первый prefab. Поздравляем🎉

        Prefab Bridge

        Prefab Bridge

        Чтобы в твой прототип можно было поиграть, тебе нужно добавить в него Игрока. Посмотри 📖инструкцию, чтобы узнать как это сделать.

        Осталось только научиться сохранять свой проект, чтобы не начинать каждый раз сначала.


        Посмотри это замечательное видео, оно поможет делать твои уровни лучше.

        Читайте также: