Как сделать стрельбу в unity 3d
Перейти к содержимому

Как сделать стрельбу в unity 3d

  • автор:

Создание шутера на Unity3D

3D шутер c мультиплеером в Unity / Урок #1 - Начало

3D шутер c мультиплеером в Unity / Урок #1 — Начало

Приступаем к видеокурсу по созданию шутера на Unity. Это будет полноценная 3D игра с возможностью мультиплеера. За курс мы узнаем как сделать шутер в Unity (Unity3D) с возможностью игры по серверу.

Видеоурок

Полезные ссылки:

  1. Официальный сайт Unity ;
Информация про Unity

Unity – это игровой движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS, Windows Phone) и даже игровых приставках PlayStation, Xbox, Nintendo.

Создание игр на движке Unity невозможно представить без написания дополнительного кода. В Unity поддерживается два языка программирования — JavaScript и C# . Раньше также поддерживался язык Boo, но позже от него отказались.

Вы можете самостоятельно выбрать на каком языке программировать в Unity, так как особого значения это не имеет. Большинство разработчиков дают предпочтение языку C# , так как он более мощный и найти различную документацию намного проще, нежели для языка JavaScript .

В Unity используется встроенные функции, которых нет ни в C#, ни в JavaScript. За счёт этого особо не имеет значения знает вы язык программирования или нет. Тем не менее, мы все же рекомендуем сперва пройти курс по изучению языка C#. Курс представлен на нашем сайте по этой ссылке .

Как сделать шутер на Unity?

Разработка игр на Unity ведется в два этапа:

  • построения дизайна через Unity графический дизайнер;
  • написание скриптов через язык C#.

Мы за курс будем делать стрелялку на Unity с возможностью игры по сети. Для создания своей игры стрелялки необходимо продумать дизайн основных игроков, добавить к ним оружие и продумать систему выстрелов на основе RayCast.

Шутер на Юнити создается столь же просто, как и другие проекты.

План курса

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

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

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

Шутер на Unity3D

3D шутер c мультиплеером в Unity / Урок #1 - Начало

3D шутер c мультиплеером в Unity / Урок #1 — Начало

Приступаем к видеокурсу по созданию шутера на Unity. Это будет полноценная 3D игра с возможностью мультиплеера. За курс мы узнаем как сделать шутер в Unity (Unity3D) с возможностью игры по серверу.

Відеоурок

Telegram group

Підписуйтесь на нашу групу в Телеграмі ����

Полезные ссылки:

  1. Официальный сайт Unity ;
Информация про Unity

Unity – это игровой движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS, Windows Phone) и даже игровых приставках PlayStation, Xbox, Nintendo.

Создание игр на движке Unity невозможно представить без написания дополнительного кода. В Unity поддерживается два языка программирования — JavaScript и C# . Раньше также поддерживался язык Boo, но позже от него отказались.

Вы можете самостоятельно выбрать на каком языке программировать в Unity, так как особого значения это не имеет. Большинство разработчиков дают предпочтение языку C# , так как он более мощный и найти различную документацию намного проще, нежели для языка JavaScript .

В Unity используется встроенные функции, которых нет ни в C#, ни в JavaScript. За счёт этого особо не имеет значения знает вы язык программирования или нет. Тем не менее, мы все же рекомендуем сперва пройти курс по изучению языка C#. Курс представлен на нашем сайте по этой ссылке .

Как сделать шутер на Unity?

Разработка игр на Unity ведется в два этапа:

  • построения дизайна через Unity графический дизайнер;
  • написание скриптов через язык C#.

Мы за курс будем делать стрелялку на Unity с возможностью игры по сети. Для создания своей игры стрелялки необходимо продумать дизайн основных игроков, добавить к ним оружие и продумать систему выстрелов на основе RayCast.

Шутер на Юнити создается столь же просто, как и другие проекты.

План курса

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

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

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

Реализация Стрельбы

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

Создание пули

Первым делом нам необходимо создать префаб пули. Обязательно добавьте к нему компонент Rigidbody2d. А в поле Body Type данного компонента, укажите значение Kinematic — чтобы на пулю не дейстовала гравитация.

Теперь создаём для префаба нашей пули новый компонет(скрипт C#), и назовём его, например, Bullet. Суть работы данного скрипта должен состоять в том, чтобы наша пуля летела с определённой скоростью и в определённом направлении, ровно 3 секунды. После чего, пуля исчезает. Давайте это реализуем в нашем скрипте:

using UnityEngine; public class Bullet : MonoBehaviour < public float timeDestroy = 3f; public float speed = 3f; public Rigidbody2D rb; void Start() < rb = GetComponent(); Invoke("DestroyBullet", timeDestroy); rb.velocity = transform.top * speed; > void DestroyBullet() < Destroy(this.gameObject); >>

Давайте разберём данный код:

  • В строке #5 мы объявили переменную timeDestroy, для того, чтобы указать время жизни данной пули. Это не обязательно, но желательно.
  • В строке #6 мы объявили переменную speed, для указании скорости нашей пули.
  • А в строке #7 мы объявили переменную rb, которая будет хранить ссылку на компонент Rigidbody2D, чтобы потом с помощью неё задать движение нашей пули.
  • В строке #11 мы присвоили переменной rb, ссылку на компонент Rigidbody2D.
  • В строке #13 указываем, что спустя 3 секунды(timeDestroy), у нас запустится метод DestroyBullet(), который с помощью метода Destroy() уничтожит наш объект пули.
  • Ну а в строке #14, с помощью метода velocity(), задаём силу движения нашей пули, направленный вверх. Направление полёта пули Вы можете изменить, прописав вместо top, одно из следующих свойств: right, left, bottom.

Выстрел

Пуля готова, теперь нам нужно при каком-либо событии, например при клике мышью, создавать эту пулю на игровой сцене. Для этого создадим скрипт C# для нашего персонажа. Скрипт назовём, например Player. Присвоим его объекту персонажа, и впишем в данный скрипт следующее содержимое:

using UnityEngine; public class Player : MonoBehaviour < public GameObject bullet; void Update() < if (Input.GetKeyDown(KeyCode.Mouse0)) < Instantiate(bullet, transform.position, Quaternion.identity); >> >

Обратите внимание, что в строке #5 мы объявили переменную bullet, которая будет хранить ссылку на наш префаб пули, для того, чтобы с помощью метода Instantiate в строке #11, мы на основе этого префаба создавали пулю на игровой сцене.

Важно: Не забудьте через Unity перетащить префаб пули в поле bullet, компонента Player, который находится у объекта вашего персонажа.

На этом всё! Надеюсь объяснил максимально понятно. Если было что-то не понятно, пишите в комментариях. Отвечу всем 🙂

Как мне импортировать модели из моего 3D редактора?

Для импорта 3D модели в Unity вы должны перетащить файл модели в окно проекта.

В инспекторе > вкладка Model Unity поддерживает импорт моделей из всех популярных 3D редакторов.

Особенности импорта из разных 3D пакетов смотрите на следующих страницах:

Текстуры

  • Храните текстуры в папке под названием Textures рядом с экспортируемым мешем в вашем проекте Unity. Это позволит Unity найти текстуру и автоматически подключить её к созданному материалу. Для получения дополнительной информации, обратитесь к разделу Текстуры.

3D форматы

Импортирование мешей в Unity может быть выполнено с помощью двух основных типов файлов:

  1. Экспортированные 3D форматы файлов, такие как .FBX или .OBJ
  2. Собственные файлы 3D приложений, например такие как .Max и .Blend файлы из 3D Studio Max и Blender.

Любой из этих типов позволит вам добавлять свои меши в Unity, но есть соображения относительно того типа, который вы выберите:

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

Unity может читать .FBX, .dae (Collada), .3DS, .dxf и .obj файлы, obj или Collada экспортеры могут быть найдены для многих приложений, точно также как FBX экспортеры могут быть найдены здесь

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

  • Экспортируйте только необходимые данные
  • Проверяемые данные (перед импортированием в Unity, переимпортируйте в 3D пакет)
  • Как правило файлы меньшего размера
  • Поддерживает модульный подход — к примеру разными компонентами для интерактивности и типов коллизий
  • Поддерживает другие 3D пакеты, чьи форматы не поддерживаются у нас напрямую

Недостатки:

  • Может замедлять процесс прототипирования и итераций
  • Легче потерять след между исходной (рабочий файл) и игровой версией данных (к примеру экспортированный FBX файл)

Собственные файлы 3D приложений

Unity также может импортировать, путём конвертации, файлы: Max, Maya, Blender, Cinema4D, Modo, Lightwave и Cheetah3D , например, .MAX, .MB, .MA и др.

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

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

Недостатки:

  • На машинах, задействованных в работе над Unity проектом, должны быть установлены лицензионные копии данного программного обеспечения
  • Файлы, содержащие ненужные данные могут стать неоправданно большими
  • Большие файлы могут замедлить процесс автосохранения
  • Меньше проверяется, поэтому труднее устранить ошибки

Модели

Файлы моделей, размещенные в папке Assets внутри проекта Unity, автоматически импортируются и сохраняются как ассеты Unity.

Файл модели может содержать 3D модель персонажа, здания или части мебели. Модель импортируется в виде набора ассетов. В окне Project(проект) главный импортированный объект представляется в виде Model Prefab(префаб модели). Обычно также существует несколько Mesh объектов, на которые ссылается Model Prefab.

Файл модели может также содержать данные анимации, которые можно использовать для анимации данной модели или других моделей. Данные анимации импортируется как один или несколько Анимационных Клипов.

![Mesh Filter вместе с Mesh Renderer позволяет появляться модели на экране.](../uploads/Main/MeshExample40.png)

Настройки импорта для мешей

Import Settings для модели будут показаны в закладке Model инспектора FBX импортера, когда модель выделена. Это влияет на меш, его нормали и импортированные материалы. Настройки применяются для каждого ассета на диске, поэтому, если вам нужен ассет с другими настройками, создайте (и соответственно переименуйте) копию файла.

Хотя изначально настроек по умолчанию может быть достаточно, будет лучше, если вы изучите список настроек, перечисленных ниже. Они могут помочь определить, что вы желаете сделать с игровым объектом.

Некоторые общие корректировки, для примера, могут быть следующими:

FBX Importer Inspector (инспектор импорта FBX): вкладка Model

  • Scale — это фактор масштаба используемый для компенсации разницы в единицах измерения между Unity и инструментом 3d моделирования — он меняет масштаб всего файла. Обычно, можете просто установить 1. Заметьте, что физический движок Unity смасштабирован так, что 1 единица измерения эквивалентна 1 метру. Это важно, так как если вы захотите получить корректное физическое поведение, вам следует получить корректно отмасштабированную модель в оригинальном приложении для моделирования. Если же этого нельзя сделать или у вас нет контроля над модификацией меша, масштаб модели может быть откорректирован здесь.
  • Generate colliders — эта опция создаст сетку коллизии чтобы позволить вашей модели сталкиваться с другими объектами.
  • Material Naming and Search — эта опция поможет автоматически настроить ваши материалы и определить местоположение текстур
Свойство: Функция:
Меши
Scale Factor Физическая система Unity предполагает, что 1 метр в игровом мире будет равен 1 единице в импортируемом файле. Если вы предпочитаете моделировать в другом масштабе, тогда вы можете компенсировать разницу здесь. По-умолчанию, .fbx, .max, .jas и .c4d файлы имеют масштаб 0.01, .mb, .ma, .lxo, .dxf, .blend и .dae масштаб 1.0, а .3ds файлы имеют масштаб 0.1.
Mesh Compression Увеличение этого значение уменьшит размер файла для меша, но может привести к неровностям. Лучше всего поднять значение настолько высоко, насколько это возможно без появления большой разницы с несжатой версией. Это полезно для оптимизации размера игры.
Read/Write Enabled Включает возможность записи меша в процессе исполнения, так что вы можете модифицировать данные; это создает копию в памяти. Когда эта опция выключена, это экономит память, так как Unity может выгружать копию данных меша в процессе игры. Однако, если вы масштабируете или инстанциируете меши в процессе исполнения с неравномерным масштабом, может потребоваться включение “Read/Write Enabled” в их настройках импорта. Причина этого в том, что неравномерный масштаб требует чтобы данные меша сохранялись в памяти. Обычно это определяется во время сборки, но с мешами, которые масштабируются или инстанциируются в процессе исполнения, вам нужно задавать это самостоятельно. Иначе они могут не отображаться корректно в игровых сборках.
Optimize Mesh Эта опция определяет порядок, в котором будут перечислены треугольники меша.
Import Blendshapes This option allows BlendShapes to be imported with your mesh.
Generate Colliders Если активна эта опция, ваш меш будет импортирован с автоматически присоединенной сеткой столкновений. Эта опция полезна для быстрой генерации сетки столкновений для геометрии окружения, но ее нужно избегать для объектов, которые будут перемещаться.
Swap UVs Используйте эту опцию если объект с наложенными картами освещения использует неправильные UV каналы. Ваши первичные и вторичные UV каналы будут поменяны между собой.
Generate Lightmap UVs Используйте эту опцию для создания второго UV канала, который будет использоваться для карт освещения.
Нормали и касательные
Normals Определяет должны ли, и если да, то как, вычисляться нормали. Это полезно для оптимизации размеров игры.
Import Настройка по умолчанию. Импортирует нормали из файла.
Calculate Вычисляет нормали, основываясь на Smoothing angle . Если выбран именно этот метод, Smoothing Angle становится включенным.
None Дезактивирует нормали. Используйте данную опцию если меш ни использует карты нормалей, ни подвергается динамическому освещению.
Tangents Определяет должны ли, и если да, то как, вычисляться касательные и бинормали. Это полезно для оптимизации размеров игры.
Import Касательные и бинормали импортируются из файла. Эта опция доступна только для FBX, Maya и 3dsMax файлов и только когда нормали также загружены из файла.
Calculate Настройка по умолчанию. Вычисляет касательные и бинормали. Эта опция доступна только когда нормали или импортированы, или вычислены.
None Отключает касательные и бинормали. Меш не будет иметь касательных, поэтому шейдеры, работающие с картами нормалей, не будут доступны.
Smoothing Angle Данная опция устанавливает насколько острой должна быть грань, чтобы считаться жестким ребром. Это также используется чтобы разделить касательные карты нормалей.
Split Tangents Активируйте эту опцию, если карта нормалей освещения разбита швами на вашем меше. Обычно это применимо только к персонажам.
Материалы
Import Materials Отключите эту опцию, если вы не хотите чтобы генерировались материалы. Вместо этого будет использован материал Default-Diffuse.
Material Naming Определяет как именуются материалы Unity:
By Base Texture Name Имя диффузной текстуры импортированного материала, которое будет использовано для названия материала Unity. В случае, когда диффузная текстура материала не задана, Unity будет использовать имя импортированного материала.
From Model’s Material Для названия Unity материала будет использовано имя импортированного материала.
Model Name + Model’s Material Для названия Unity материала будет использовано сочетание имени файла модели и импортированного материала.
Material Search Определяет, где Unity будет пытаться найти существующие материалы, используя имя, заданное параметром Material Naming :
Local Unity будет пытаться найти существующий материал только в “локальной” папке Materials, например, поддиректория Materials, которая расположена в той же директории, что и файл модели.
Recursive-Up Unity будет пытаться найти существующие материалы во всех поддиректориях Materials во всех родительских папках вплоть до папки Assets.
Everywhere Unity будет пытаться найти существующие материалы во всех папках Unity проекта.

Смотрите также

  • Моделирование оптимизированных персонажей
  • Настройки импорта меша
  • Как мне исправить вращение импортированной модели?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *