Физические материалы в Unity 3d

Всем доброго времени суток. Сегодня я снова буду рассматривать Unity 3d и рассматривать я буду такую вещь как физические материалы.

 

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

 

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

 

Теперь выбираем один из этих кубов и в окне Inspector находим Box Collider и видим там надпись Material. Нажимаем на кружок рядом и выбираем материал из которого должен состоять объект. Так же к каждому объекту, то бишь нашему созданному кубу добавляем Rigidbody и ставим галочку чтобы на них влияла гравитация. О этом я писал в прошлой статье.

Добавление физического материала
Dante

По умолчанию есть семь физических материалов Bouncy, Ice, MaxFriction, Metal, Rubber, Wood, ZeroFriction. Bouncy это упругий материал, он будет падать отпрыгивать обратно и снова падать под влиянием гравитации. Следующий материал Ice, то есть лед, по идее он должен быть скользким, но отпрыгивать он особо не будет просто упадет. MaxFriction так же просто упадет, этот материал влияет на трение и при добавлении этого материала трение нашего объекта будет максимальным. Metal, это металлический материал, то есть объект будет вести себя как металлический. Rubber резина, не настолько упругая как Bouncy, но и не совсем твердая, при падении произведет несколько отскоков. Затем идет Wood, дерево вести себя данный куб будет как деревянный. Ну и ZeroFriction даст материалу для которого он задан минимальное трение.

 

При простом падении мы можем видеть только влияние материалов которые влияют на отскок, объекта, Если же мы повернем платформу на которую будут падать объекты под углом то увидим такие свойства как трение, одни объекты будут скользить другие же остановятся, а наш самый упругий объект Bouncy весело упрыгает под воздействием гравитации. Так же на эти объекты смогут влиять и наши персонажи, в зависимости от того какой материал будет на объекте.

 

Показывать что получилось у меня я не буду, это просто сделать самому. Кому кроме меня интересно тот думаю сделает. До новых статей

Физический скрипт Rigidbody в Unity

Всем доброго времени суток. Сегодня я буду рассматривать физическую часть движка Unity 3d а именно Rigidbody.

 

Чтобы не путаться с тем что уже сделано, а что нет, я создал новую платформу, и повесил над ней сферу, которая и является нашим испытуемым объектом. Rigidbody можно добавить на наш объект, для этого надо выделить объект на который добавляем физическую часть, затем переходим в меню Component > Phisics > Rigidbody. Теперь в инспекторе появилась надпись Rigidbody.

Rigidbody в Unity 3d
Dante

Что в нем мы имеем? Сначала идет Mass это масса, измеряется в килограммах, здесь все просто. Дальше идет Drag, если верить Google, это тянуть, тащить, перетаскивать, а в реальности это вязкость среды. То есть, если мы повысим заданное число, то наш объект будет продвигаться в данной среде медленнее, как например в воде, или в болоте. Затем идет Angular Drag, это тоже что и Drag, только угловая вязкость, то есть вязкость для вращения. Чтобы контролировать скорость вращения. Следующей идет Use Gravity, это гравитация, если данную галочку убрать то гравитации не будет, и объекты не будут двигаться под воздействием силы тяжести. Далее у нас идет Is Kinematic, включение отключение кинематики, при включенной кинематике, внешние физические воздействия не будут производить на объект никакого влияния. Короче кто не понял посмотрите что такое кинематика. Теперь у нас идет Interpolate это сглаживание движения, здесь у нас есть выбор того что можно настроить, по умолчанию стоит None, то бишь интерполяция а именно поиск промежуточных значений в физическом движении отключена. Данное значение можно изменить на Interpolate это по прошлому кадру, либо Extrapolate по следующему кадру. При большой скорости движения данные значения могут сгладить движения нашего объекта. Следующим пунктом у нас идет Collision Detection, данный пункт отвечает за столкновения, к примеру выстрелы и столкновения пули, пули летят с большой скоростью и данный пункт может помочь в случае каких-либо проблем, с пролетанием сквозь объект и тд. Discrete который стоит у нас по умолчанию, это самое обычное столкновение. Continuous это частое столкновение, когда наш объект много сталкивается, ну к примеру много разных объектов, и чтобы они не проходили сквозь друг друга используется Continuous. И крайнее наше значение здесь это Continuous Dynamic, данный скрипт используется для пуль и иных объектов обладающих очень большими скоростями, используется для того чтобы на больших скоростях объекты не проходили сквозь друг друга. То есть, пуля, к примеру может застрять, отскочить, срикошетить но не пройти сквозь объект. Если я правильно понял. Ну и крайний пункт который у нас есть в Rigidbody, это Constraints. Данный пункт отвечает за замораживание движения. То бишь вы можете ограничить движение по определенному вектору., здесь все достаточно просто, выбираем вектор по которому вращение нам ненужно, и ставим там галочку. Ну здесь надо пробовать чтобы получилось что необходимо, если к примеру нам надо чтобы платформа провернулась просто на месте, то выделяем галочкой при этом первая строка Freeze Position, отвечает за вектора вращение по которым необходимо запретить то бишь если мы её выделим всю, то наш объект будет просто вращаться на месте. А вторую строку сам до конца не понял. Ладно потом может докумекаю.

 

Вот как то все так. Мне так полезно было, а вы смотрите сами.

CheckPoint в Unity3d

Всем доброго времени суток, сегодня я буду разбираться как делать CheckPoint в Unity3d с помощью C#. Тема для игр очень важная, и нужная. Играть без CheckPoints конечно можно, однако обычно это бывает достаточно сложно, так как их часто ставят для прохождения труднопроходимых мест. Ведь никому особо не охота, после того как погиб где-то в середине игры начинать играть сначала, я скажу даже один уровень проходить по нескольку раз из-за своей какой-либо глупости обычно обидно.

 

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

 

Для своего эксперимента я взял свой урок не с самодельным танчиком, а там где наш персонаж бегает по пустой платформе, пока с нее не падает, только несколько изменил саму игру, добавил в нее места сохранения, или точки возрождения, для того чтобы было видно добавил их как три круглых диска, разного цвета на нашу сцену. Сделал это достаточно просто, просто сделав префаб цилиндра, назвал его CheckPointPref и увеличил его в четыре раза по осям X и Z и уменьшил его по высоте Y до 0.02. Так же удалил из префаба Capsule Collider в окне Inspector, на даном этапе оно мне не надо, дальше перекидал их на сцену в места которые мне понравились и в том же окне Inspector > Mesh Renderer, в Unity3d добавил материалы к каждому префабу который добавил на сцену. Так чтобы они стали разных цветов, конечно можно просто поменять цвета материалов, ну да это сами разберетесь, мне просто надо различать что я воскрешаюсь в игре в месте в котором сохранился. Вид вышел приблизительно вот такой.

Точки чекпоинтов в Unity
Dante

Читать далее CheckPoint в Unity3d

Unity работа с файлами

Всем доброго времени суток, знаю что я давно ничего не писал, некоторые думаю думали что я забросил сайт. Какое то время действительно так и было. Не до того было мне. В реале свои заботы, покращення, да у нас в стране вообще покращення на покращенни, тфу блин язык сломаю. Мы тут двигаемся в цивилизацию, от газа к дровам, хорошо бы еще от электричества к керосиновым лампам перейти, и вполне серьезно нам тут по телевизору, который я почти не смотрю? рассказывают что дрова это альтернативное топливо. Ладно это у меня нервы, нафиг этих политиков.

 

Я снова мучаю игровой движок Unity3d и сегодня рассмотрю работу с файлами в unity. Тема достаточно важная и нужная. По крайней мере для меня. Файлы в играх используются очень часто. К примеру сохранение.

 

Что такое файлы думаю никому объяснять не нужно, находятся они у нас в папке New Unity Project, а сама эта папка находится там где вы создали свой проект. Для начала давайте создадим файл в нашем проекте при помощи скрипта. Открываем Unity3d и пишем скрипт создания файла.

 

Скрипт создания файла я назвал не особо сложно, FileWorks. Создавал его в папке с создаваемой игрой, вместе с остальными скриптами, а создаваться после работы такого скрипта файл будет в основной папке. То есть? на данный момент это не важно совершенно. И первое что нам необходимо сделать в файле, это подключить библиотеку для работы с файлами, поэтому пишем using System.IO; далее в функции Start мы создаем проверку информации о файле, FileInfo f и собираем информацию о файле = new FileInfo («my file.txt») который еще не существует. Следующей строкой мы если файл не существует if (!f.Exists) создаем его f.Create () то есть, строка вот такого вида if (!f.Exists) f.Create (); создаст именно тот файл о котором мы собирали информацию, то бишь файл который мы назвали «my file.txt» и общий скрипт должен принять вот такой вид.

Создаем файл скриптом
Dante

Читать далее Unity работа с файлами

Учим наш куб стрелять

Всем доброго времени суток, сегодня я продолжаю изучать разработку компьютерных игр, и буду делать игру где будет ездить нечто вроде танка, точнее это будет просто куб с дулом. Его я сделал в 3D редакторе Blender и импортировал в Unity3d. Как импортировать из Blender в Unity так чтобы не было проблем с направлениями из-за разницы в системах координат, я писал ранее. Можно было бы конечно как и описано в видеоуроке по которому я учусь обойтись без посторонних моделей, а сделать просто соединив два куба, но мне так больше понравилось.

 

Итак берем наш импортированный из Blender3d наш «Танк» и стараемся заставить его стрелять. Что нам для этого необходимо? Практически тоже что я делал в уроках которые выполнял ранее, разве что несколько к этому придется добавить.

 

Для начала перетягиваем наш танк на сцену и в него перетягиваем камеру.

 

Теперь нам необходимо добавить на сцену GameObject, то бишь просто пустой игровой объект. GameObject так же как и камеру перетаскиваем на наш «танк».

Добавление танка на сцену
Dante

Читать далее Учим наш куб стрелять

Настройка GUI элементов

Доброго времени суток, сегодня я буду говорить о 2D текстурах которые находятся у нас на экране игры которую мы делаем. Это различные прицелы, менюшки и тп. К примеру на изображении ниже вы можете видеть прицел посреди экрана, выделил я его красным кружком.

Прицел на экране Unity 3d
Dante

 

Теперь давайте рассмотрим код который отвечает за отображение нашего прицела.

Пример кода вывода прицела
Dante

Читать далее Настройка GUI элементов

Импортирование из Blender в Unity 3d

Кто пробовал создавать модели для своих игр при помощи 3d редактора Blender 3D, заметил некоторые проблемы если просто импортировать модель в игровой движок Unity. При попытке двигаться по направлениям, эти самые направления не совпадают с реальными. Вместо движения по вектору вперед, мы двигаемся вверх.

 

Связано это с тем что направление векторов в 3d редакторе Blender, не совпадает с такими же направлениями в Unity.

 

Что же необходимо сделать для того чтобы все встало на свои места?

 

Здесь как рас все достаточно просто. Нам просто необходимо повернуть созданную модель настолько чтобы вектора в редакторе и вектора в игровом движке совпадали.

 

Перед экспортом нажимаем R,X,-90,Enter, ctrl+A, Вращение и масштаб ,R,X,90,Enter, потом экспортируем в FBX с настройками осей по умолчанию.

 

Для экспортирования заходим Файл > Экспортировать > FBX (.fbx). Всё наш blend файл экспортировался в fbx формате со всеми осями которые теперь совпадают с осями игрового движка Unity 3d.

 

Все, надеюсь данная статья была полезна кому-то.