Astăzi vom cânta în Kismet al UDK și vom arunca o privire asupra dezvoltării Evenimentelor, a ceea ce sunt, a modului în care le putem crea și cum le putem gestiona. Veți învăța cum să creați și să gestionați aproape orice tip de eveniment din UDK, pentru a putea construi niveluri complete, complexe și complet scrise începând cu nivelul simplu pe care îl vom crea în acest tutorial.
În UDK, un eveniment este o situație specială pe care o definiți (evident în Unreal Kismet) care aduce consecințe jocului sau altor elemente de joc. Puteți crea evenimente oriunde într-un nivel, fără limitări. Puteți să le împărțiți în trei grupuri diferite: Evenimente precompilate, Evenimente de declanșare sau Evenimente InterpActor. În acest tutorial le vom acoperi pe toți pentru a vă oferi o imagine completă a modului în care un eveniment este creat și manipulat.
Evenimente precompilate: Dacă deschideți Kismetul Unreal (verde K în partea de sus a ferestrei UDK, lângă pictograma browserului de conținut și pictograma Matinee) și faceți clic dreapta pe un spațiu gol al ferestrei Kismet și mergeți sub "Eveniment nou", veți vedea o mulțime de evenimente gata de utilizare grupate împreună ca "Actor", "AI" sau "Pion", de exemplu. Actorul, AI și pionul sunt, în acest caz, partea declanșatoare a unui eveniment și fără ele, evenimentul nu începe deloc. Deci, un exemplu: dacă doriți ca un eveniment să înceapă când un dușman moare, va trebui să mergeți sub "pion", pentru că un dușman este numit pion și alegeți Moartea.
Pentru scopul nostru, creați un 512 x 512 x 256 Cubul coborât.
Acum, adăugați un punct-lumină în cameră ținând-o L tasta de pe tastatură și apoi clic în stânga în camera pe care tocmai am creat-o (Cubul.)
Mutați lumina în centrul camerei și apoi reconstruiți iluminatul (cu sau fără Lightmass, nu este important.)
Terminat? Acum, putem începe cu primul nostru eveniment UDK, un eveniment precompilat în acest caz. Cel mai comun eveniment precompilat folosit de un coder UDK este evenimentul "Level Loaded". După cum vă puteți imagina, acest eveniment începe când nivelul este încărcat. Deci, să începem cu aceasta: Du-te la Unreal Kismet, faceți clic dreapta pe un spațiu gol și du-te la Eveniment nou> Nivel încărcat.
Acum, ar trebui să aveți un Nod numit "Nivel Loaded" în Kismet. Dacă da, atunci puteți vedea acum că acest Nod are trei ieșiri sau, mai bine în acest caz, trei condiții pentru a activa evenimentul: Când nivelul este încărcat și vizibil, la începutul nivelului sau când există un nivel Resetare. Aceste condiții sunt destul de explicative, de fapt singura diferență dintre "Încărcat și vizibil" și "Începutul nivelului" este o mică întârziere a celui de-al doilea comparativ cu primul. În timp ce al treilea este despre o reîncărcare a nivelului, dar nu vom mai intra în această funcție acum.
Vom crea un fel de alarmă care îi spune jucătorului să se pregătească pentru că vine un inamic. Pentru a realiza acest lucru, să creăm un alt Nod prin a merge (întotdeauna cu click-dreapta), la Acțiune nouă> Voce / Anunțuri> Anunț de redare.
Acum, faceți clic pe acest Nod și în bara de text Announcement, scrieți "Pregătiți-vă! Un robot vine să vă ucidă!" Cu asta, îi spunem UDK să scrie un text în centrul monitorului care îi sfătuiește pe jucătorul că vine un robot să-l omoare, așa că trebuie să se pregătească să lupte.
Acum, creați încă 6 noduri de anunțuri Play, așa cum am făcut înainte.
În ultima, scrieți sub textul Anunț text "Luați șocul de șoc și lupta va începe!".
În celelalte noduri, vom folosi o numărătoare inversă care este inclusă în activele UDK. Deci, intrați în "Content Browser" și scrieți în bara de căutare "numărătoarea inversă". Se va afișa un Wave Ten Soundnode, apoi selectați "Countdown 5".
Acum, reveniți la Kismet și faceți clic pe primul nod gol pentru anunțurile Play. Mergeți în bara de anunță sunet și faceți clic pe săgeata verde din partea dreaptă. Numele coloanei SoundNode Wave ar trebui să apară în bara. Ceea ce tocmai ați făcut este să spuneți UDK să redea sunetul un număr (de cinci) ori pentru a crea o numărătoare inversă.
Deci, acum, faceți ceea ce ați făcut cu Nodul anterior, cu cele patru Noduri Anunț Play. Amintiți-vă că trebuie să selectați mai întâi numărul pentru numărătoarea inversă în Browserul de conținut (a patra, a treia, a doua și a primului) și apoi să faceți clic pe nodul din Kismet și apoi în Sound Announcement, faceți clic pe săgeata verde pentru a introduceți-l.
Terminat? Bine. Acum, este timpul să conectăm evenimentul la nodurile create. Conectați ieșirea din "Începutul nivelului" la primul nod de anunțuri.
Apoi, de la ieșirea primului dvs. Nod de anunț la intrarea celui de-al doilea Nod de anunțuri și așa mai departe (după cum se arată mai jos.)
Acum, când începe nivelul, avem o serie de anunțuri care îi sfătuiesc pe jucători, dar dacă le lăsăm așa cum sunt, doar un singur anunț va fi afișat pe ecran și jucătorul nu va primi toate informațiile pe care le dăm . Pentru a le afișa pe toate, trebuie să stabilim o întârziere între Nodurile noastre de Anunț. Deci, faceți clic dreapta pe ieșirea (dreptunghiul negru) al primului Nod de anunțuri și faceți clic pe "Set Activare întârziere". În fereastra care apare, setați întârzierea la 2.0 și faceți clic pe OK.
Repetați pasul anterior pentru conexiunile dintre celelalte noduri, dar de această dată setați întârzierea la 1.0, pentru că există numărătoarea inversă!
Evenimente de declanșare: Acestea sunt evenimente speciale folosite pentru declanșarea unei părți a unui element, care nu este afișat în timpul jocului, numit "Trigger". Declanșatoarele sunt cilindri, dar nu cilindri adecvați. Ele au o rază și o înălțime, dar nu sunt o pensulă sau ceva la care puteți aplica un material. Raza și înălțimea acestor cilindri descriu zona pe care un jucător, un pion sau orice doriți, poate activa evenimentul relativ. Deci, în acest caz, jucătorii sau pionii nu sunt direct responsabili pentru începerea unui eveniment, dar îl declanșează prin contactul cu zona definită a cilindrului Triggerului.
Amintiți-vă că ați scris în ultimul anunț "Luați pușca de șoc?" bine, cred că este timpul să punem unul în nivelul tău. Dar, mai întâi, să punem un declanșator, care ne va ajuta să definim zona în care jucătorul va activa următorul eveniment și unde vom lansa lansatorul nostru de rachete. Deci, faceți clic dreapta pe podea, mergeți la "Add Actor" și selectați "Add Trigger". Acum, veți observa că a apărut o icoană ciudată, ceea ce pare a fi un comutator, cu un dreptunghi roșu care se înfășoară în jurul unui cilindru verde.
Acum, așa cum am spus mai devreme, cilindrul este zona care definește dacă există sau nu contact cu jucătorul și activează un eveniment. Să o facem mai mare. Faceți clic dreapta pe declanșator, mergeți la "Proprietăți" și sub "Componenta cilindrului", modificați Radioul cilindrului și înălțimea așa cum doriți (voi merge pentru 60-60.)
Probabil ca și al meu, cilindrul dvs. de declanșare a căzut în pământ. Așa că glisați-o și când ați terminat, reveniți la Kismet.
Într-un spațiu gol lângă ultima Anunțare, dați clic dreapta și accesați Noua acțiune> Actor și selectați "Actor Factory".
Faceți clic pe acest nod și în bara de fabrică faceți clic pe săgeata albastră din stânga și selectați "UTFactoryPickup". Apoi faceți clic pe "Factory" pentru ao extinde, iar în bara Inventory selectați "Shock Rifle".
Apoi, selectați Triggerul din nivel și reveniți la Kismet, faceți clic dreapta pe intrarea "SpawnPoint" și faceți clic pe "New Object Var using Trigger".
Acum, conectați ieșirea ultimului Nod de Anunț la intrarea Nodului Fabrica de Actori. Ei bine, în final, avem pușca noastră de șoc, care apare după ultimul anunț.
Acum, trebuie să aruncăm un inamic după ce jucătorul a luat Șocul de șoc. Pentru a face acest lucru, vom crea un eveniment declanșator. Cu declanșatorul selectat în nivel, du-te la Kismet și faceți clic dreapta pe un spațiu gol, apoi sub "Eveniment nou folosind Trigger", selectați "Atingeți". Aceasta înseamnă că evenimentul va fi activat când jucătorul intră în zona cilindrului. O altă alegere comună este "Utilizat", înseamnă că atunci când jucătorul se află în fața cilindrului și apasă tasta E, poate activa un eveniment. Celelalte sunt alegeri minore, care nu sunt folosite frecvent cu un declanșator.
Acum, creați un alt nod "ActorFactory", dar de această dată în bara de fabrică, selectați "UTActorAI". Și în proprietățile fabricii, setați ControllerClass: la "UTBot", PawnClass: la "UTPawn" și verificați proprietatea "GiveDefaultInventory".
Apoi, dați-i un nume (vă voi lăsa decizia) și conectați evenimentul "Trigger Touch" la "Actor Factory". Acum, faceți clic dreapta pe ieșirea "Sprâncată" și selectați "Crearea unui nou obiect de obiecte".
În nivelul dvs., în partea opusă a declanșatorului dvs., faceți clic dreapta pe podea, mergeți la "Add Actor" și selectați "Add Pathnode".
Acum, reveniți la Kismet, faceți clic dreapta pe "Spawn Point" și selectați New Object Var folosind Pathnode. În cele din urmă, ați creat primul dvs. eveniment de declanșare și vrăjmași-vă inamicul după ce jucătorul a luat arma, singurul lucru care rămâne este de a da inamicului o țintă.
În Kismet, faceți clic dreapta și mergeți la Acțiune nouă> Diverse și selectați "Trace".
Conectați ieșirea "finalizată" a ActorFactory la intrarea "Trace", apoi conectați intrarea de pornire a "Trace" la Variabila de obiecte a ActorFactory "A crescut".
Acum, faceți clic dreapta pe un spațiu gol și mergeți la Noua acțiune> AI și selectați "Start firing At".
Apoi, faceți clic dreapta pe un spațiu gol, mergeți la Noua acțiune> AI și de această dată selectați "Opriți focul".
Conectați ieșirea "Nu blocată" la "Porniți la foc" și la "Opriți" la "Opriți foc".
Conectați ieșirea din "Start" și "Opriți foc" la intrarea "Trace" (după cum se arată.)
Setați întârzierea de ieșire la .5.
Conectați intrarea țintă atât la "Start", cât și la "Opriți foc" la variabila de obiecte a lui Spawned.
Acum, faceți clic dreapta pe un spațiu gol și mergeți la Noua variabilă> Player, și selectați "Player".
Conectați intrarea "Fire At" la variabila player. Dintr-o dată, ați creat un bot (un inamic) care apare în butelia de declanșare și apoi caută playerul. Și dacă este obstrucționat de ceva, el nu trage, în timp ce dacă nu este obstrucționat, el poate trage liber la jucător.
Acum, dacă încerci nivelul tău, vei vedea că uneori dușmanul dă naștere înainte de sfârșitul numărătoarei inversate. Acest lucru se întâmplă deoarece Triggerul este deja activat și nu așteaptă sfârșitul secvenței Kismet anterioare. Pentru a activa acest lucru numai când numărătoarea este terminată, hai să mergem la Kismet, selectați "Trigger Event Touch" și debifați "Enabled" în proprietățile sale.
Apoi faceți clic dreapta (ca întotdeauna în Kismet) și mergeți la Acțiune nouă> Comutați și alegeți "Toggle".
Acum, conectați ieșirea ultimului Nod de anunțuri Play la intrarea "Porniți" la Toggle Node și ieșirea "Event" a "Toggle" la "Event Trigger Touch". Acum aveți un Eveniment de declanșare care este activat când secvența Anunțului Play sa terminat.
InterpActor, StaticMeshActor și Brush: Acestea sunt similare cu cele de declanșare, de fapt aceste evenimente sunt întotdeauna activate prin contactul cu o zonă, dar în acest caz nu cu o zonă cilindrică, ci cu o zonă personalizată față de InterpActor (sau StaticMeshActor sau Brush). Singura schimbare mare, în afară de zona diferită cu care puteți intra în contact, este că declanșatorul este vizibil în timpul jocului și puteți face contact fizic cu acesta în timp ce jucați.
În sfârșit, am ajuns la InterpActor Events. Pentru acest tip de eveniment vom crea un fel de împărțire între nivel și vom împărți în două părți, dar într-un mod singular! Deci, mergeți la "Content Browser" și căutați "thinwire", când căutarea este finalizată, faceți dublu clic pe "Thinwire16" și faceți un clic dreapta în nivelul dvs. și selectați "Add InterpActor".
Acum căutați "conector" și selectați primul rezultat al căutării dvs., adăugați de două ori acest InterpActor.
Reglați aceste trei elemente, așa cum se arată în imaginea de mai jos, pentru a împărți camera în două părți. (În acest scop, scalați subțire în Y de 1.2)
Cu aceste elemente selectate, apăsați F4 pentru a deschide proprietățile.
Acum, du-te la "Coliziune" și setați "Tip de coliziune" la "Touch All".
Ce ați făcut este să puneți trei InterpActor în nivelul cu un tip de coliziune setat pe Touch All. Ceea ce înseamnă că în acest caz, un eveniment va fi activat dacă jucătorul sau altcineva atinge firele sau conectorii. Acum, trebuie să creăm acest eveniment! Selectați cei trei actori pe care i-am creat, mergeți la Kismet, faceți clic dreapta pe un spațiu gol și mergeți la "Eveniment nou folosind InterpActor?" Și selectați "Atingeți".
Faceți clic dreapta în Kismet, mergeți la Noua acțiune> Actor și selectați "Modificați sănătatea".
Selectați nodul "Modificați sănătatea" și setați numărul de pagube la 100 (durata de viață a jucătorului), puteți seta tipul de deteriorare la Distressed sau Telefragged dacă doriți ca un sunet să fie redat când Playerul primește dauna.
Acum, faceți clic dreapta în Kismet, mergeți la Noua variabilă> Player și selectați "Player".
Conectați intrarea "Țintă" a "Modificați sănătatea" la această variabilă.
Conectați toate ieșirile "Touched" ale evenimentelor InterpActor la nodul "Modificați sănătatea". Acum, când cineva atinge firele sau conectorii, jucătorul va muri. Nu este atât de egal, dar în acest nivel, inamicul nu se mișcă, el doar stă în fața ta și te împușcă, așa că nu poate atinge firele. În timp ce jucătorul trebuie să fie atent atunci când el însuși se mișcă.
Există încă o problemă care trebuie rezolvată, dacă mori prin atingerea firelor sau a conectorilor și respawn, atingând InterpActorul care tocmai v-a omorât, nu te va ucide din nou. Asta pentru că evenimentele noastre sunt setate să fie activate doar o singură dată. Pentru a rezolva aceasta, mergeți la Kismet, selectați toate nodurile evenimentului InterpActor și mergeți la "Evenimente secvențiale".
Aceste proprietăți sunt identice în nodul de pornire al fiecărui eveniment: "Max Trigger Count" înseamnă câte ori poate fi activat Evenimentul. "Întârziere declanșare" înseamnă cât timp durează o activare înainte de următoarea. "Activat" înseamnă în mod evident că, dacă este verificat, evenimentul este activat, altfel este inactiv. "Prioritatea" este utilă atunci când aveți multe evenimente care încep în același moment și în final "Player sau Client Side Only" înseamnă cine poate activa acest eveniment. Pentru scopul nostru, setați "Max Trigger Count" la 0 (infinit).
În cele din urmă, nivelul este complet, deci, salvați-vă, reconstruiți iluminatul și căile de nivel și sunteți gata să încercați nivelul!
Acum faceți clic dreapta și mergeți la "New Condition" și selectați "Is Alive".
Conectați ieșirea finalizată la intrarea "Alive's" și conectați ieșirea "True" la "Trace" și la "Start Fire At" și la "Stop Fire" la intrarea "Alive's". Conectați, de asemenea, playerul "Is Alive" la obiectul "spawned". Acum, ați rezolvat în final eroarea (încercați doar!) Și sunteți gata să vă jucați la nivel!