Перейти к содержанию
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
  • Лайк 3
  • Мастер! 3
  • Жму руку 1
  • Хабар 5

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


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

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

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

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

Изменено пользователем WolfHeart
  • Мастер! 2
  • Аплодисменты 1

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

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


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

Зацепил оттуда несколько фишек

Ну этого добра и в С1 хватает. Выше уже написали. А вот закрытые изнутри досками двери - норм. Расстреливаешь доску из окна и дверь открыта. Такого вроде не встречал в С1.


Мой канал на YouTubeСтарый сталк. KRG.

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


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

Такого вроде не встречал в С1.

Тот же метод, что и с замками, никакой разницы.

  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

А вот закрытые изнутри досками двери - норм.

2 часа назад, denis2000 сказал:

Тот же метод, что и с замками, никакой разницы.

Можешь закрыть чем угодно, хоть лампочкой. :u1F600:

К слову этот метод используется не только в СоР, но и в SoC.
Пример: закрытые металические и деревянные шкафчики.

Так не открываются, а стукнишь ножем в районе замкочка и появляется возможность его открыть.
Разница только в том, что не видно разрушения этого замочка, он же врезной, внутрений. :u1F642:

 


Дополнено 3 минуты спустя

Вопрос в другом: почему модеры редко используют этот метод?


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

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


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

@WolfHeart В ТЧ замок просто отпадает, в этом же исполнении разлетается на два куска. 

  • Мастер! 1

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


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

В ТЧ замок просто отпадает, в этом же исполнении разлетается на два куска. 

Да какая разница? Метод тот же. А вот реализация это уже на усмотрение и фантазию модера.
P.S. При желании, можно сделать хоть на пять частей, хоть на мелкие осколки.
P.S.S. Ну а в целом, молодец что поднял эту тему, а то многие модеры, вместо использования этого уже готового метода, выдумывают какие то костыли.

  • Лайк 1

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

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


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

Полезный гайд, но я думаю новичкам было бы еще очень полезны пояснения по тому, какие именно параметры важны и почему, и что в кастом дате\конфиге логики за что отвечает. Чтобы они могли потом по аналогии делать замки под свои нужды.

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


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

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

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

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

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

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

Войти

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

Войти

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