Геймдев: Про разработку игр и вообще

Jan 09, 2019 17:54

Я какое-то время назад создал на Фэйсбуке группу, в которую пишу всякие мысли по поводу разработки игр, немного говорю о процессе создания игрухи (она сейчас в работе), ну и разное показавшееся мне интересным из "кухни" процесса.

Буду постить сюда под тэгом
геймдев

А если удобнее читать группу Фэйсбука, вот она, вступайте: https://www.facebook.com/groups/351876222283274/

Начнем!



Недавно мне захотелось вставить в одну из игрух, которые я сейчас разрабатываю разрушаемые объекты. По-умолчанию объекты в движке Unity имеют коллайдер, обычно для 3d объектов он имеет форму шара, либо квадрата\прямоугольника, либо, (если объект сложной формы) к нему применяется т.н. mesh collider - движок просчитывает форму объекта и делает коллайдер по этой форме. С момента, когда объекту присвоен коллайдер, с ним можно совершать всякие физические взаимодействия. Например толкнуть или взорвать, тогда объект отлетит в сторону на заданное расстояние (оно меняется в зависимости от силы толчка\взрыва и массы объекта).

Но объект останется целым, и если взорвали кубик, то кубиком он и улетит, а потом упадет где-то. А мне, например, хочется, чтобы этот кубик в момент взрыва разделило на кучу неровных обломков и они красиво разлетелись бы в разные стороны. И что я для этого должен сделать?

Один из способов, это создать в программе (например в Blender) два объекта (пусть будут те же кубики).Ну если совсем точно, то мы сначала создаем и сохраняем один объект, а потом меняем его и тоже сохраняем другим файлом. Один кубик будет... просто кубиком, без затей, делаем его и сохраняем для дальнейшего использования. А дальше начинаем издеваться над этим кубиком.Мы пропускаем его через специальный плагин программы Blender (раньше это нужно было делать вручную, теперь плагин автоматизировал процесс). Плагин делит наш кубик на кучу неровных осколков в заданных рамках. Ок, сохраняем разбитый кубик!

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

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

Приделываем скрипт к обоим кубикам и перетаскиваем на сцену (наш уровень, который и будет отображаться в игре) первый (целый) кубик. Второй (разделенный) держим в загашнике

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

Так что , по сути, мы заменяем целый кубик на кубик , состоящий из осколков и дальше с удовлетворением наблюдаем, как на осколки действует физика, например взрыва.

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

Итого:
1. делаем здание по такому принципу
2. генерим взрыв по нажатию на клавишу
3. жмем на клавишу
4.смотрим:

...а если еще сделать замедление времени (slow moooo)...



геймдев

Previous post Next post
Up