UDK - Skape hendelser med uvirkelig Kismet

I dag skal vi dykke inn i UDKs Kismet og ta en titt på å utvikle hendelser, hva de er, hvordan vi kan lage dem og hvordan vi kan håndtere dem. Du lærer hvordan du oppretter og administrerer nesten alle typer hendelser i UDK for å kunne bygge komplette, komplekse og fullt skriptede nivåer som begynner med det enkle nivået vi skal skape i denne opplæringen.

Introduksjon til UDKs arrangementer

I UDK er en begivenhet en bestemt situasjon du definerer, (åpenbart i Unreal Kismet) som gir konsekvenser for spill eller andre spillelementer. Du kan opprette hendelser hvor som helst på et nivå, uten begrensninger. Du kan dele dem i tre forskjellige grupper: Pre-Compiled Events, Trigger Events eller InterpActor Events. I denne opplæringen vil vi dekke dem alle for å gi deg et komplett bilde av hvordan en hendelse blir opprettet og manipulert.


Pre-Compiled Events

Trinn 1

Pre-compiled events: Hvis du åpner Unreal Kismet (den grønne K øverst i UDK-vinduet, i nærheten av innholdsbrowserens ikon og Matinee-ikonet) og høyreklikker på et tomt mellomrom i Kismet-vinduet, og du går under "Ny begivenhet", du vil se mange klare hendelser gruppert sammen som "Skuespiller", "AI" eller "Bonde" for eksempel. Skuespiller, AI og Pawn er i dette tilfellet utløsende del av et arrangement og uten dem, starter ikke arrangementet i det hele tatt. Så, et eksempel: Hvis du vil ha en begivenhet å starte når en fiende dør, må du gå under «Pawn», fordi en fiende kalles en bonde og velger Death.


Steg 2

For vårt formål, opprett en 512 x 512 x 256 Hollowed Cube.


Trinn 3

Nå legger du et punktlys inn i rommet ved å holde L tast på tastaturet, og deretter venstre-klikk på rommet vi nettopp har opprettet (kuben.)


Trinn 4

Flytt lyset inn i rommet, og bygg deretter belysningen (med eller uten Lightmass, det er ikke viktig.)


Trinn 5

Ferdig? Nå kan vi starte med vår første UDK-hendelse, en forhåndskompilert hendelse i dette tilfellet. Den vanligste forhåndskompilerte hendelsen som brukes av en UDK-koder, er "Level Loaded" -hendelsen. Som du kan forestille deg, starter denne hendelsen når nivået er lastet. Så, la oss starte med dette: Gå til Unreal Kismet, høyreklikk på et tomt mellomrom og gå til Ny hendelse> Nivå lastet.


Trinn 6

Nå bør du ha en node kalt "Level Loaded" i Kismet. I så fall kan du nå se at denne knutepunktet har tre utganger, eller bedre i dette tilfellet tre forhold for å aktivere hendelsen: Når nivået er lastet og synlig, ved begynnelsen av nivået eller når det er en nullstilling. Disse forholdene er ganske selvforklarende, faktisk er den eneste forskjellen mellom "Loaded and Visible" og "Beginning of Level" en liten forsinkelse av den andre sammenlignet med den første. Mens den tredje handler om en omlastning av nivået, men vi kommer ikke inn i denne funksjonen nå.


Trinn 7

Vi skal lage en slags alarm som forteller spilleren å forberede seg fordi en fiende kommer. For å oppnå dette, la oss opprette en annen knutepunkt ved å gå (alltid med høyreklikk), til Ny handling> Stemme / kunngjøringer> Play Announcement.


Trinn 8

Klikk nå på denne knutepunktet, og skriv inn "Forbered deg! En meldingstegn kommer til å drepe deg!" Med dette forteller vi UDK å skrive en tekst i midten av skjermen som anbefaler spilleren at en robot kommer for å drepe ham, så han må forberede seg til å kjempe.


Trinn 9

Nå opprett en annen 6 Play Announcement Noder, som vi har gjort før.


Trinn 10

I den siste skriver du under kunngjøringstekst "Ta sjokkgeværet og kampen vil begynne!".


Trinn 11

I de andre Noder skal vi bruke en lyd nedtelling som er inkludert i UDK eiendeler. Så, gå inn i "Content Browser" og skriv i søkefeltet "nedtelling". En Ten Soundnode Wave vil dukke opp, velg deretter "Countdown 5".


Trinn 12

Gå nå tilbake til Kismet og klikk på den første tomme Play Announcement Node. Gå inn i lydbjelken Kunngjøring, og klikk på den grønne pilen til høyre. Navnet på SoundNode Wave skal vises i baren. Det du nettopp har gjort er å fortelle UDK å spille lyden et nummer (fem) ganger for å lage en nedtelling.


Trinn 13

Så nå, gjør hva du nettopp gjorde med forrige knutepunkt, med de fire resterende Play Announcement Noder. Husk at du først må velge nummeret for nedtellingen i innholdsbrowseren (den fjerde, den tredje, den andre og den første) og deretter klikke på noden i Kismet, og deretter i Kunngjøringslyd, klikk på den grønne pilen til sett inn den.


Trinn 14

Ferdig? Vi vil. Nå er det på tide å koble arrangementet til noder vi har opprettet. Koble utgangen av "Begynnelse av nivå" til den første kunngjøringsnoden.


Trinn 15

Deretter, fra utgangen av din første kunngjøringsnode til inngangen til den andre kunngjøringsnoden og så videre (som vist nedenfor.)


Trinn 16

Nå når nivået begynner, har vi en serie med kunngjøringer som gir råd til spilleren, men hvis vi forlater dem slik de er, vises bare en kunngjøring på skjermen, og spilleren vil ikke få all den informasjonen vi vil gi ham . For å vise dem alle må vi sette en forsinkelse mellom våre meldingsnoder. Så høyreklikk på Output (det svarte rektangelet) av den første Announcement Node, og klikk på "Set Activate Delay". I vinduet som vises, angi forsinkelsen til 2.0 og klikk OK.


Trinn 17

Gjenta det forrige trinnet for forbindelsene mellom de andre nodene, men denne gangen angis forsinkelsen til 1.0, fordi det er nedtellingen!


Trigger Events

Trinn 1

Trigger Events: Disse er spesielle hendelser som brukes til å utløse en del av et element, som ikke vises under spill, kalt en "Trigger". Utløsere er sylindere, men ikke riktige sylindere. De har en radius og en høyde, men er ikke en pensel eller noe du kan bruke et materiale på. Radius og høyde på disse sylinderne beskriver området som en spiller, en bonde eller noe du vil, kan aktivere den relative hendelsen. Så i dette tilfellet er spillere eller bånd ikke direkte ansvarlige for starten av en hendelse, men de utløser den gjennom kontakt med det definerte området av Triggers sylinder.


Steg 2

Husk at du skrev i den siste kunngjøringen "Ta sjokkgeværet?"? vel jeg antar det er på tide å sette en i ditt nivå. Men først, la oss sette en Trigger inn, som vil hjelpe oss med å definere området der spilleren vil aktivere neste arrangement, og hvor vi skal gyte vår Rocket Launcher. Så høyreklikk på gulvet, gå til "Add Actor" og velg "Add Trigger". Nå vil du legge merke til at et merkelig ikon har dukket opp, hva synes å være en bryter, med et rødt rektangel som bryter rundt en grønn sylinder.


Trinn 3

Nå, som tidligere sagt, er sylinderen området som definerer om det er kontakt med spilleren eller ikke, og aktiverer en hendelse. La oss gjøre det større. Høyreklikk på avtrekkeren, gå til "Egenskaper" og under "Cylinder Component", endre Cylinder Radius og Høyde som du ønsker (jeg skal gå for en 60-60.)


Trinn 4

Sannsynligvis som med min, gikk Triggers sylinder ned i bakken. Så skyv den opp og når du er ferdig, gå tilbake til Kismet.


Trinn 5

På et tomt rom nær det siste kunngjøringen, høyreklikk og gå til Ny handling> Skuespiller og velg "Actor Factory".


Trinn 6

Klikk på denne knutepunktet, og klikk på den blå pilen til venstre i fabrikkfeltet og velg "UTFactoryPickup". Klikk deretter på "Fabrikk" for å utvide den, og velg "Shock Rifle" i Inventory baren..


Trinn 7

Deretter velger du Trigger i nivået og går tilbake til Kismet, høyreklikk på "SpawnPoint" -inngangen og klikk på "Nytt objekt som bruker Trigger".


Trinn 8

Koble nå utgangen til siste kunngjøringsnode til inngangen til skuespillerens fabrikknode. Vel, vi har endelig vår Shock Rifle som går etter den siste kunngjøringen.


Trinn 9

Nå må vi kaste en fiende etter at spilleren har tatt sjakkgeværet. For å gjøre dette skal vi opprette en Trigger Event. Med Trigger valgt i nivået, gå til Kismet og høyreklikk på et tomt rom, og velg "Berør" under "Ny begivenhet ved hjelp av utløser". Dette betyr at hendelsen vil bli aktivert når spilleren går inn i sylinderområdet. Et annet vanlig valg er "Used", det betyr at når spilleren er foran sylinderen, og trykker på E-tasten, kan han aktivere en hendelse. De andre er mindre valg, som ikke brukes ofte med en Trigger.


Trinn 10

Nå oppretter du en annen "ActorFactory" Node, men denne gangen i Factory bar velger du "UTActorAI". Og i Factory egenskaper, sett ControllerClass: til "UTBot", PawnClass: til "UTPawn" og se på "GiveDefaultInventory" Eiendom.


Trinn 11

Deretter gi ham et navn (jeg vil legge avgjørelsen til deg) og koble "Trigger Touch" -hendelsen til "Actor Factory". Nå, høyreklikk på "Spawned Output" og velg "Create New Object Var".


Trinn 12

På ditt nivå, på motsatt side av Triggeren, høyreklikk på gulvet, gå til "Add Actor" og velg "Add Pathnode".


Trinn 13

Gå nå tilbake til Kismet, høyreklikk på "Spawn Point" og velg Nytt objekt hvor du bruker Pathnode. Til slutt har du laget din første Trigger Event og har din fiende gyting etter at spilleren har tatt våpenet, det eneste som gjenstår er å gi fienden et mål.


Trinn 14

I Kismet, høyreklikk og gå til Ny handling> Diverse og velg "Spor".


Trinn 15

Koble "Ferdig" utgang fra ActorFactory til "Trace" -inngangen, og koble deretter Start-inngangen til "Spor" til objektvariabelen til ActorFactory's "Sprukket".


Trinn 16

Høyreklikk på et tomt mellomrom, og gå til Ny handling> AI og velg "Start firing At".


Trinn 17

Deretter høyreklikker du på et tomt mellomrom, gå til Ny handling> AI og denne gangen velger du "Stop firing".


Trinn 18

Koble "Ikke-hindret" utgang til "Start firing At" og "Obstructed" til "Stop firing".


Trinn 19

Koble utgangen til både "Start" og "Stopp avfyring" til Input of "Trace" (som vist.)


Trinn 20

Still inn utsatt forsinkelse til .5.


Trinn 21

Koble målinngangene til både "Start" og "Stopp avfyring" til Sprangets Object Variable.


Trinn 22

Nå, høyreklikk på et tomt mellomrom og gå til Ny variabel> Spiller, og velg "Player".


Trinn 23

Koble "Fire At" -inngangen til spillervariabelen. Plutselig har du opprettet en bot (en fiende) som gyter i utløsercylinderen og deretter søker etter spilleren. Og hvis han er blokkert av noe, skyter han ikke, mens hvis han ikke er blokkert, kan han skyte fritt på spilleren.


Trinn 24

Nå, hvis du prøver nivået ditt, ser du at noen ganger fienden spretter før slutten av nedtellingen. Dette skjer fordi Trigger er allerede aktivert, og det venter ikke på slutten av den forrige Kismet-sekvensen. For å aktivere dette bare når nedtellingen er ferdig, la oss gå til Kismet, velg "Trigger Event Touch" og fjern merket "Enabled" i egenskapene.


Trinn 25

Høyreklikk deretter (som alltid i Kismet), og gå til Ny handling> Bytt og velg "Bytt".


Trinn 26

Koble nå utgangen til den siste Play Announcement Node til "Turn On" -inngangen til Toggle Node, og "Event" Output av "Switch" til "Trigger Touch Event". Nå har du en Trigger-hendelse som er aktivert når Play Announcement-sekvensen er avsluttet.


InterpActor Events

Trinn 1

InterpActor, StaticMeshActor og Brush hendelser: Disse er lik triggere, faktisk blir disse hendelsene alltid aktivert ved kontakt med et område, men i dette tilfellet ikke med et sylindrisk område, men med et tilpasset område i forhold til InterpActor (eller StaticMeshActor eller pensel) valgt. Den eneste store forandringen, bortsett fra det forskjellige området du kan ta kontakt med, er at Triggeren er synlig i spillet, og du kan få fysisk kontakt med det mens du spiller.


Steg 2

Endelig har vi kommet til InterpActor Events. For denne typen arrangement, vil vi opprette en slags oppdeling mellom nivået og splitte det opp i to deler, men på en enkelt måte! Så gå til "Content Browser" og søk etter "thinwire", når søket er fullført, dobbeltklikk på "Thinwire16" og gjør et høyreklikk på ditt nivå og velg "Legg til InterpActor".


Trinn 3

Nå, søk etter "kontakt" og velg det første resultatet av søket, legg til denne InterpActor to ganger.


Trinn 4

Juster disse tre elementene som vist på bildet under, for å dele rommet i to deler. (Til dette formål skal du skille thinwire inn Y av 1.2)


Trinn 5

Med disse elementene fremdeles valgt, trykker du på F4 for å åpne egenskapene.


Trinn 6

Nå, gå til "Kollisjon" og sett "Kollisjonstype" til "Berør alle".


Trinn 7

Hva du nettopp har gjort, er satt tre InterpActor i nivået med en kollisjonstype satt til Touch All. Det betyr at i dette tilfellet vil en hendelse bli aktivert hvis spilleren eller noen andre berører ledningene eller kontaktene. Nå må vi skape denne hendelsen! Velg de tre skuespillerne vi har opprettet, gå til Kismet, høyreklikk på et tomt mellomrom, og gå til "Ny hendelse med InterpActor?", Og velg "Berør".


Trinn 8

Høyreklikk i Kismet, gå til Ny handling> Skuespiller og velg "Endre helse".


Trinn 9

Velg "Endre helse" knutepunkt, og angi mengden skade på 100 (spillerens liv) kan du også sette skade type til knust eller Telefragged hvis du vil ha en lyd som spilles når spilleren mottar skaden.


Trinn 10

Nå, høyreklikk i Kismet, gå til Ny variabel> Spiller og velg "Player".


Trinn 11

Koble "Mål" -inngangen til "Endre helse" til denne variabelen.


Trinn 12

Koble alle "Touched" Outputs av InterpActor Events til "Modify Health" Node. Nå, når noen berører ledningene eller kontaktene, vil spilleren dø. Ikke så lik, men på dette nivået beveger fienden seg ikke, han står bare rett foran deg og skyter deg, så han kan ikke røre ledningene. Mens spilleren må være forsiktig når han selv beveger seg.


Trinn 13

Det er fortsatt et problem å bli løst, hvis du dør ved å berøre ledningene eller kontaktene og respawn, berører InterpActor som bare drepte deg, vil ikke drepe deg igjen. Det er fordi våre hendelser er satt til å bli aktivert bare én gang. For å fikse dette, gå til Kismet, velg alle InterpActor Event Nodes og gå under "Sequence Events".


Trinn 14

Disse egenskapene er de samme i alle begivenhetens startnummer: "Max Trigger Count" betyr hvor mange ganger hendelsen kan aktiveres. "Trigger Delay" betyr hvor lang tid varer en aktivering før den neste. "Aktivert" betyr åpenbart at hvis den er merket, er hendelsen aktivert, ellers er den inaktiv. "Prioritet" er nyttig når du har mange hendelser som starter i samme øyeblikk, og til slutt betyr bare "Player eller Client Side Only" som kan aktivere denne hendelsen. For vårt formål, sett "Max Trigger Count" til 0 (Uendelig).


Trinn 15

Endelig er nivået fullført, så lagre, gjenoppbygg ditt nivåbelysning og stier, og du er klar til å prøve nivået!


Trinn 16

Høyreklikk nå, og gå til "New Condition" og velg "Er Alive".


Trinn 17

Koble den ferdige utgangen til "Er levende" -inngang, og koble "True" -utgangen til "Spor", og "Start brann på" og "Stopp brann" til "Er levende" -inngang. Koble også "Er Alive's" -spiller til "Spawned" -objektet. Nå har du endelig løst feilen (prøv bare!), Og du er klar til å spille ditt nivå!