Редактирование: Точки пути (Way Points)
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | = | + | = Система расстановки путей = |
− | + | В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени waypoint-а, например, для точки с именем '''wp00''':<br /> | |
− | + | '''wp00|flag1|flag2''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == Флаги точек пути path_walk == | |
− | + | * '''a=state'''<br /> Выбирает состояние тела при перемещении (только из раздела "Ходячие состояния"). Список состояний можно найти в <code>gamedata\scripts\state_lib.script</code> | |
− | + | * '''p=percent'''<br /> Вероятность остановиться в точке в процентах (0-100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки. | |
− | + | * '''sig=name'''<br /> Установить сигнал с именем '''name''' сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля '''on_signal''' логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути '''path_look'''. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Флаги точек пути path_look == | == Флаги точек пути path_look == | ||
− | + | * '''a=state'''<br /> Выбирает состояние тела при стоянии (или сидении) на месте (из разделов "Стоячие и сидячие состояния"). Список состояний можно взять в <code>gamedata\scripts\state_lib.script</code> | |
− | + | * '''t=msec''' <br />Время в миллисекундах, которое персонаж должен смотреть в заданную точку. '''*''' — бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию — 5000. Для конечных (терминальных) вершин пути '''path_walk''', у которых не более 1-й соответствующей точки '''path_look''', значение '''t''' всегда считается бесконечным и его явно задавать не нужно. | |
− | + | * '''sig=name'''<br /> После поворота в точку '''path_look''' установить сигнал с именем '''name'''. | |
− | |||
− | |||
− | *''' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * '''t = msec''' <br />Время в миллисекундах, которое персонаж должен смотреть в заданную точку. '''*''' — бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию — 5000. Для конечных (терминальных) вершин пути '''path_walk''', у которых не более 1-й соответствующей точки '''path_look''', значение '''t''' всегда считается бесконечным и его явно задавать не нужно. | ||
− | * '''sig = name'''<br /> После поворота в точку '''path_look''' установить сигнал с именем '''name'''. | ||
* '''syn'''<br /> Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком '''syn''' не прибудут все персонажи данной '''team''' ('''team''' задается в виде текстовой строки в '''customdata'''). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою idle-анимацию. | * '''syn'''<br /> Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком '''syn''' не прибудут все персонажи данной '''team''' ('''team''' задается в виде текстовой строки в '''customdata'''). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою idle-анимацию. | ||
− | * '''sigtm = signal'''<br /> Устанавливает сигнал при вызове '''time_callback'''-а '''state manager'''-ом. Соответственно, если '''t=0''', то сигнал будет установлен после отыгрывания init-анимации. Это используется, например, с анимацией press, которая состоит из двух частей: 1 — нажимаем на кнопку, 2 — опускаем руку. В пути '''path_look''' можно сделать так: < | + | * '''sigtm=signal'''<br /> Устанавливает сигнал при вызове '''time_callback'''-а '''state manager'''-ом. Соответственно, если '''t=0''', то сигнал будет установлен после отыгрывания init-анимации. Это используется, например, с анимацией press, которая состоит из двух частей: 1 — нажимаем на кнопку, 2 — опускаем руку. В пути '''path_look''' можно сделать так:<br />'''wp00|a=press|t=0|sigtm=pressed'''<br />А затем переключить схему: <br />'''on_signal = pressed | другая_схема''' |
+ | |||
== Более подробное описание путей на примере логики walker == | == Более подробное описание путей на примере логики walker == | ||
+ | [[Файл:logic-setup-walker.png]]<br /> | ||
На карту для каждого '''walker'''-а нужно поставить: | На карту для каждого '''walker'''-а нужно поставить: | ||
− | # Путь <span style="color: | + | # Путь <span style="color:#228b44;">'''path_walk'''</span>, по которому '''walker''' ходит. |
− | # Путь <span style="color: | + | # Путь <span style="color:#034c81;">'''path_look'''</span>, состоящий из точек, в которые '''walker''' смотрит. |
− | '''Walker'''-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать друг с другом | + | '''Walker'''-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать |
+ | друг с другом. | ||
'''[walker]''' | '''[walker]''' | ||
Строка 79: | Строка 34: | ||
Правила расстановки флажков в путях рассмотрим на нескольких примерах. | Правила расстановки флажков в путях рассмотрим на нескольких примерах. | ||
− | + | '''Пример 1''' | |
Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: | Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: | ||
− | + | КАРТИНКА1 | |
− | Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути <span style="color: | + | Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в |
+ | пути <span style="color:#228b44;">'''path_walk'''</span> существуют флажки. У каждого вейпоинта есть имя: '''wp00''', '''wp01''' и т.д. Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа '''|'''. Пишется '''a=anim''', где '''anim''' – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем '''a=threat''', то персонаж пойдет в состоянии '''danger''', если '''a=raid''', то побежит с оружием наизготовку и т.д. | ||
− | + | {| style="background-color: #fffdee;" width="100%" | |
+ | |<span style="color:#172172;">'''Заметка'''</span><br /> | ||
+ | ---- | ||
+ | В точках пути '''path_walk''' используются анимации только из раздела «Ходячие состояния»! | ||
+ | |} | ||
− | + | ---- | |
+ | Пример 2''' | ||
− | + | Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существует поле '''s = имя_звуковой_схемы''' (по умолчанию звук отключен). Несколько тем можно перечислять через запятую. | |
− | + | ---- | |
− | + | '''Пример 3''' | |
− | |||
− | |||
− | |||
− | |||
− | + | КАРТИНКА 3 | |
− | + | В примере 3 используется только поле '''s''', чтобы задать тему разговора, и флажок '''sc''', чтобы показать, что звук проигрывается не разово, а периодически. Остальные параметры ('''sa''', '''sf''', '''sp''', '''st''') задавать не рекомендуется, значения по умолчанию приемлемы для большинства скриптов. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути <span style="color:#034c81;">'''path_look'''</span>, о котором будет написано ниже. Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь <span style="color:#034c81;">'''path_look'''</span>. | |
− | + | ---- | |
− | + | '''Пример 4''' | |
− | |||
− | |||
− | |||
Усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него: | Усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него: | ||
− | + | КАРТИНКА 4 | |
− | Что добавилось в этом примере? Путь <span style="color:blue">'''path_look'''</span> с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется. Далее, в точках путей <span style="color: | + | Что добавилось в этом примере? Путь <span style="color:blue;"><span style="color:#034c81;">'''path_look'''</span></span> с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется. Далее, в точках путей <span style="color:green;"><span style="color:#228b44;">'''path_walk'''</span></span> и <span style="color:#034c81;">'''path_look'''</span>, которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки. Например, в верхней паре точек ставим флажок '''0''', а в |
+ | нижней паре точек — флажок '''1'''. | ||
− | Теперь персонаж будет останавливаться в точках <span style="color: | + | Теперь персонаж будет останавливаться в точках <span style="color:#228b44;">'''path_walk'''</span>, помеченных флажком, и смотреть в точку <span style="color:#034c81;">'''path_look'''</span>, помеченную тем же самым флажком. Если точка <span style="color:#228b44;">'''path_walk'''</span> не помечена флажком, персонаж проходит ее не останавливаясь. Одной точке <span style="color:#228b44;">'''path_walk'''</span> может соответствовать несколько точек <span style="color:#034c81;">'''path_look'''</span>. Тогда персонаж случайным образом выберет одну из подходящих точек. |
− | По аналогии с <span style="color: | + | По аналогии с <span style="color:#228b44;">'''path_walk'''</span>, в точках пути <span style="color:#034c81;">'''path_look'''</span> можно использовать различные флажки, меняющие поведение: |
* '''p = …''' — вероятность, с которой персонаж посмотрит именно в эту точку. Значения '''p''' всех подходящих точек суммируются, т.е. если у одной точки '''p = 100''', а у другой '''300''', то персонаж посмотрит в первую с вероятностью '''25%''' (т.е. 100 из 400).<br /> Во избежание путаницы, рекомендуется задавать '''p''' так, чтобы их сумма составляла '''100'''. По умолчанию у всех точек '''p = 100'''. | * '''p = …''' — вероятность, с которой персонаж посмотрит именно в эту точку. Значения '''p''' всех подходящих точек суммируются, т.е. если у одной точки '''p = 100''', а у другой '''300''', то персонаж посмотрит в первую с вероятностью '''25%''' (т.е. 100 из 400).<br /> Во избежание путаницы, рекомендуется задавать '''p''' так, чтобы их сумма составляла '''100'''. По умолчанию у всех точек '''p = 100'''. | ||
* '''t = …''' — время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек). | * '''t = …''' — время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек). | ||
− | + | ---- | |
− | + | '''Пример 5''' | |
В этом примере, проходя через точку '''wp00''', персонаж с вероятностью '''30%''' посмотрит в точку '''wp00''' в течение 5 секунд, и с вероятностью '''70%''' посмотрит в точку '''wp01''' в течении 10 секунд. | В этом примере, проходя через точку '''wp00''', персонаж с вероятностью '''30%''' посмотрит в точку '''wp00''' в течение 5 секунд, и с вероятностью '''70%''' посмотрит в точку '''wp01''' в течении 10 секунд. | ||
Строка 132: | Строка 87: | ||
* '''a = имя_анимации''' (по умолчанию idle).<br /> Если мы напишем '''a=hide''', то персонаж сядет в состоянии '''danger''', если '''a=guard''', то встанет с оружием наизготовку и т.д. | * '''a = имя_анимации''' (по умолчанию idle).<br /> Если мы напишем '''a=hide''', то персонаж сядет в состоянии '''danger''', если '''a=guard''', то встанет с оружием наизготовку и т.д. | ||
− | + | {| style="background-color: #fffdee;" width="100%" | |
+ | |<span style="color:#172172;">'''Заметка'''</span><br /> | ||
+ | ---- | ||
+ | В точках пути '''path_look''' используются анимации только из раздела «Стоячие и сидячие состояния»! | ||
+ | |} | ||
+ | |||
− | [[Категория:Level Editor | + | [[Категория:Level Editor]] |