?

Log in

No account? Create an account

Previous Entry | Next Entry

50224002_2016017855142105_6866922390064988160_n

Боже, это сделано. Три дня возился и вот оно вроде готово.







В общем я последнее время работал над выстрелами и всем, что с ними связано. Один из способов моделирования выстрела из оружия, это создание некоего невидимого луча - raycast. Получается так, что в руках у персонажа модель оружия и мы скриптом задаем начало невидимого луча (конец ствола оружия) и конец луча (заданная дальность стрельбы конкретного оружия). Дальше на это налепляются всякие эффекты, но действующей физической силой является именно raycast. Вот как это примерно происходит:
1. мы жмем на кнопку, которая у нас отвечает за выстрел из оружия
2. появляется луч (он невидимый)
3. одновременно срабатывает вспышка из ствола и мы слышим звук выстрела.
4. если луч не встречается с какой либо поверхностью на всем своем протяжении... то и бог с ним, ничего интересного не происходит. Ну а если попадается поверхность... о-о-о.. короче тут простор для любителей спецэффектов.

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

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

Звук в данном случае привязан к появлению эффекта искр (но это не обязательно, можно привязать к появлению , например, следа от пули).

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

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

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

Звук тоже, появляется снаряд - срабатывает звук выстрела.

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

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

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

А теперь добавляем то, о чем я говорил в одном из предыдущих постов - заменяемость объектов на разрушаемые по триггеру.

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

Вдумайтесь, как приятно будет теперь уничтожать авто!

Comments

lindal
Jan. 22nd, 2019 12:02 pm (UTC)
Один весомый плюс - не нужно тратиться на пиротехнику!
shutofsky
Jan. 22nd, 2019 12:13 pm (UTC)
Зато нет запаха, ощущения ударной волны всем телом и дрожи воздуха от пролетающего близко куска авто! Не случайно релаксационные "комнаты разрушения" всё-таки делают в реале.
lindal
Jan. 22nd, 2019 12:30 pm (UTC)
Посмотри на описанное мной, как на один из компонентов комплексной терапии: отработал пиротехническую смену, пришел домой, а там вот такая игруха. Ну и учитывай - тыж маньяк до пиротехники, не все хотят этого в таких диких дозах!
shutofsky
Jan. 22nd, 2019 12:36 pm (UTC)
Не. в таком контексте оно, безусловно, интересно. На этом работают. кстати, многочисленные игры с масс дестроем. Но в целом - да, маньячество чаще надо проявлять вживую.

Latest Month

February 2019
S M T W T F S
     12
3456789
10111213141516
17181920212223
2425262728  

Tags

Page Summary

Powered by LiveJournal.com