входове и изходи
Логическата входно-изходна система за взаимодействащи обекти в игра е много полезна функция на игровия двигател Source.
Съдържание
Субектите имат два начина за взаимодействие помежду си: изпращане на „изход“ (изход) или приемане на „вход“ (вход) на друг субект. Например, играчът натисна бутона (func_button) - синята светлина (светлина) светна; тоест бутонът изпрати сигнала "изход", за крушката ще бъде "вход" - полученият сигнал. Един изход може да се използва за активиране на множество обекти, т.е. генериране на множество входове. Правилно конфигуриран изход се комбинира с вход във „връзка“, която предава допълнителни параметри на приемника, какво е закъснението преди изходът да бъде изпратен и дали изходът трябва да бъде изпратен по-късно. Изходът може да бъде изпратен към всеки вход и обратно. Това ви позволява да създавате сложни и мощни взаимодействия между обекти.
Като пример, Logic_timer може да изпрати изходOnTimer, когато времето, указано в таймера, изтече. Същият изход може да бъде изпратен -Покажикъм вход на спрайт, който ще стане видим, когато времето изтече. Също така този изход може да бъде изпратен доSparkOnceвход на някой Env_spark, след което той ще пусне искри. Като използвате параметрите на връзката, можете да зададете забавяне преди изпращане на изхода или да го изпратите само веднъж.
За потребители, запознати с първата система за взаимодействие на обекти на Half-Life, параметритеtargetnameиtargetвече са остарели и са подмножество на I/O системата. Trigger_multiple, който можеше да изпраща само един тип сигнал преди, сега има няколко опции:OnStartTouch, OnEndTouch, OnTouchи т.н. Тези изходи могат да бъдат свързани към произволен брой обекти и да имат персонални настройки за свързване (забавяне, еднократно задействанесамо), използването на мулти-мениджъри е отхвърлено, те вече са част от I/O системата. Параметърътkilltargetвече е заменен с входKill.
Изходе събитие, което ще настъпи след промяна на състоянието на обект. Може да е натиснат бутон, таймер, затваряща се врата. За даден обект могат да бъдат зададени произволен брой изходи, което прави възможно активирането му при всякакви възможни условия. Всички изходи са регистрирани в прозорецаСвойства на обекта, в разделаИзходиима всички налични изходи за този обект.
Ето опциите:
- Името на изхода.
- Името на обекта, до който ще бъде изпратен изходът, т.е. който трябва да бъде активиран.
- Името на входа е действието, което обектът ще предприеме, след като приеме изхода.
- Параметър overr >Прости изходи
- OnTrigger- изпраща изход след активиране.
- OnMapSpawn- изпраща изход, след като картата е заредена.
- OnNewGame- изпраща резултат след стартиране нанова игра.
- OnLoadGame- изпраща резултат след зареждане на запис.
Входовесе свързват към изходи от всякакъв тип. В раздела Вход можете да видите всички свързани входове за избрания обект.
Тъй като всеки изход може да се свърже с всеки вход, това позволява да се създават сложни комбинации от взаимодействия на обекти. Само с помощта на таймери можете да включвате / изключвате светлината, да възпроизвеждате звук и различни други ефекти, без да използвате други обекти. Натискането на бутона "Маркиране" или двукратното щракване върху елемент в списъка ще ви отведе до обекта, към който принадлежи изходът.
Ако връзката е зачертана с червена линия, това означава, че тя не е зададена правилно, изходът не съществува в изходния обект или няма даден вход в целтаобразувание. Неправилните връзки не са опасни, но ще се покажат в менюто за грешка Проверка за проблеми.
Резултати и стойности
Някои изходи на обекти са числови стойности, какъвто е случаят с изхода наOutValuemath_counter. Тези изходи са свързани с входове, които приемат параметър и ще попълнят стойност за този параметър, когато бъдат задействани. Напримерmath_counterможе да има следния вход:OutValue mover SetPositionкъдето "mover" е името на func_movelinear. Позицията наmoverможе да се промени с помощта на най-простите аритметични операции math_counter.
Най-простият тригер
Този пример ще покаже как да използвате входове/изходи в случай на тригер при влизане, който ще възпроизведе звук.
Отворете картата и добавете ambient_generic към нея (именувайте я „ambient_1“). В настройките посочете файла, който искате да възпроизведете, задайте първоначалното състояние на изключено. След това поставете върху картата четка, пълна с текстурата "toolstrigger", и я превърнете в обектtrigger_once. Отидете в разделаИзходии щракнете върху бутона "Добавяне".
Задайте параметъра "Моят изход с име" на "OnStartTouch". Това означава, че изходът ще бъде изпратен, когато играчът влезе в четката на спусъка.
Посочете името на обекта, който ще възпроизвежда звука в параметъра „Наименувани целеви обекти“, ние го наричаме „ambient_1“.
Задайте „През този вход“ на „PlaySound“. Това означава, чеambient_genericтрябва да възпроизвежда звука.
Кликнете върху „Приложи“ и затворете прозореца. Сега имаме тригер, веднага щом играчът влезе в него, той ще изпрати командатаambient_generic, която ще възпроизведе звука.
Ако отворите свойстватаambient_genericв разделаInputs, ще видите изхода на тригера, свързан към входаambient_generic.
Преди да компилирате и тествате картата, уверете се, че основните елементи (светлини, стартове на играчи и т.н.) присъстват на нея.
Ако I/O системата на вашата карта не работи както бихте искали, следните конзолни команди ще ви помогнат да намерите грешки:
- разработчик 0/1/2
- ent_messages_draw 0/1
- ent_fire
- ent_pause
- ent_step