Перейти к содержанию
vasyan54636

[COP] Создание двери с разбиваемым замком

Рекомендуемые сообщения

 

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

1. Создаем модель двери.
Моделируем обычную динамическую дверь, в любом удобном 3D-редакторе, в моем случае это 3DsMAX. Углубляться в детали по созданию двери в данном гайде смысла не вижу, так как такие уроки уже есть (Пример). У меня получилось следующее:
                                  a.png
2. Создаем модель замка
Этап моделирования и текстурирования пропускаю, так как не сомневаюсь в ваших навыках. Для тех, кто работает с 3Ds MAX -  в Command Panel переходим в вкладку Create -> Systems -> Bones. Размещаем кость, даем ей названием link, подгоняем под размер нашей модели. Выделяем наш замок, применяем к нему модификатор Skin. В модификаторе Skin, свиток Parameters, ищем кнопку Bones: Add, в открывшемся листе выбираем нашу кость, все автоматически привязалось. Скриптами ден стеша экспортируем получившуюся модельку.
                                            image.png

2.1. Создание обломков замка 
Тут, опять же, каждый может действовать в рамках своей фантазии и навыков. Я поступил следующим образом. Взял модель замка, создал кривую линию, с помощью булевых операций разрубил модельку замка на два куска. Детачнул один кусок от другого, получил два объекта. К каждому из объектов делаем и привязываем link кость, как расписал выше. После чего экспортируем каждый кусок как отдельный объект. У меня получилось как-то так: 
                                            image.png

3. Настраиваем модель в Actor Editor
Подгружаем дверь, настраиваем по уроку Андрея Непряхина, экспортируем. Подгружаем объект цельного замка. Раскрываем Bones, выбираем кость link, выставляем параметры Shape -> Type -> Box ; Joint -> Type -> Rigid. Затем делаем Generate Shape All. Раскрываем Surfaces, и к текстурам применяем параметры shader: models\model ; compile: default ; game mtl: default_object. Раскрываем Object -> Game Options -> User data вписываем #include "models\objects\door_locker_01.ltx" и экспортируем в .ogf нашу настроенную модельку замка. Таким же образом подгружаем два обломка замка, настраиваем их как цельный замок, но без инклюда в юзер дата, эспортируем в OGF по пути dynamics\door\part\ c названием door_locker_01_part_1 и  door_locker_01_part_2.
                                             image.png
4. Создаем конфиг для замка
В юзер дате мы указали путь models\objects\, по которому лежит специальный файл с настройками нашего замка. Создаем по этому пути файл door_locker_01.ltx и впишем в него следующие параметры:

[disable]
linear_factor            = 0.5
angular_factor           = 0.5
;----------------
[collide]
ignore_static
ignore_small_objects
ignore_ragdoll
;not_collide_parts // наличие это строки определяет колидится ли объект;----------------

[destroyed]
dynamics\door\part\door_locker_01_part_1
dynamics\door\part\door_locker_01_part_2

[autoremove_parts]
time                      = 60
;----------------
[collision_damage]
link                     = 0.004
;----------------
[particles]
destroy_particles        = destroy_fx\destroy_wood_00
;----------------
[particle_bones]
link                     =  0.0, 0.15, 0.0
;----------------
[sound]
break_sound              =  material\metal_box\collide\big_metal_1
default                  = 1.0, -1, 0.0

[immunities]
burn_immunity            = 0.05        ;коэффициенты иммунитета
strike_immunity          = 0.5
shock_immunity           = 0.0
wound_immunity           = 0.5
radiation_immunity       = 0.0
telepatic_immunity       = 0.0
chemical_burn_immunity   = 0.0
explosion_immunity       = 1.0
fire_wound_immunity      = 0.5

[impulse_transition_to_parts]
random_min               = 5.0     ; величина случайно направленного импульса пропорционально массе нового объекта
random_hit_imp           = 2.0     ; величина случайно направленного импульса пропорционально разрушающему хиту
;ref_bone                          ; кость из по которой определяется скорость для частей у который связь не задана, по умолчанию рут
imp_transition_factor    = 1.0     ; фактор с которым прикладывается хит по исходному объекту ко всем частям
lv_transition_factor     = 0.5     ; коэффициент передачи линейной скорости
av_transition_factor     = 0.5     ; коэффициент передачи угловой скорости

5. Размещаем дверь и замок на локации
Дело за малым. Остается разместить все это на локации. Итак, ставим в нужном месте physic_door, назначаем ему визуал нашей двери, ставим в fixed bones: link, в custom data пишем

[logic]
cfg = scripts\location\physics\locked_door_01.ltx

[collide]
ignore_static

В игре создаем файл scripts\location\physics\locked_door_01.ltx в нем пишем:
 

[logic]
active = ph_door@locked

[ph_door@close]
locked = false
closed = true
snd_open_start = wood_small_open
snd_close_start = wood_small_close_start
snd_close_stop = wood_small_close_stop
on_use = ph_door@open

[ph_door@open]
locked = false
closed = false
snd_open_start = wood_small_open
snd_close_start = wood_small_close_start
snd_close_stop = wood_small_close_stop
on_use = ph_door@close

[ph_door@locked]
locked = true
closed = true
snd_open_start = wood_small_open
snd_close_start = wood_small_close_start
snd_close_stop = wood_small_close_stop
on_info = {+locker_destroyed} ph_door@close

Дверь установили, ставим замок. Размещаем physics -> object, даем ему визуал замка, устанавливаем fixed bones: link, в custom data пишем:
[collide]
ignore_static

[logic]
active = ph_on_death

[ph_on_death]
on_info = %+locker_destroyed%

                                                                                 У меня получилось следующим образом:
                                             image.png
Компилируем спавн, закидываем в игру и проверяем итоговый результат:

Изменено пользователем vasyan54636
  • Лайк 2
  • Мастер! 2
  • Хабар 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
37 минут назад, vasyan54636 сказал:

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

А ничего, что такая фишка изначально есть в оригинальном СоР?

База "Свободы" - Армейские склады, здание где сидит Лукаш, на первом этаже дверь в арсенал, перед ней еще охранник стоит.
Перепрыгиваешь через охранника, ножем сбиваешь замок и грабишь арсенал.
И тебе за это ничего не будет. :u1F601:

Изменено пользователем WolfHeart
  • Мастер! 2

EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу