Programmeren van een 3D omgeving in Unreal Engine – Respawn, Possess en Destroy

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Wat vooraf ging


Inleiding

Laat ons eerst even kennismaken met de gebruikte begrippen:

  • Respawn is het terug in de wereld brengen van een karakter.
  • Possessing, het in bezit nemen van een Pawn of Character.

Situering van deze handleiding binnen Unreal Engine


Spawn en Destroy

Eerst gaan we bespreken hoe we een Actor kunnen spawnen en destroyen. Spawnen is een Actor laten verschijnen in een Level.

De instructie die u moet gebruiken om een actor te laten verschijnen (spawnen) is Spawn Actor from Class. Vervolgens moet u de naam van de klasse meegeven van de actor die moet spawnen en de transformatie (locatie en oriëntatie) waar u wilt spawnen.

Wilt u een actor verwijderen uit een level (actors worden automatisch uit het geheugen verwijderd als een level wordt afgesloten), dan gebruikt u DestroyActor. U moet bepalen welke actor moet verwijderd worden.

Om alle actors van een specifieke klasse te selecteren zoekt u naar de functionaliteit Get All Actors Of Class. Het resultaat is een array met alle Actors van de opgegeven klasse.

Voorbeeld – Spawn

  • Open eventueel een nieuw project met Starter Content.
  • Zoek de Static Mesh SM_Bush en sleep de Bush in het Level.
  • Ga naar de Level Blueprint.

Bij het drukken op de F-toets willen we de struik in brand zetten. Onderstaande code zal dit uitvoeren

  • Centraal staat de functie Spawn Actor, de gebruikte Class is Blueprint Effect Fire (een meegeleverd effect uit de Starter Content).
  • De Spawn Transformatie (locatie en oriëntatie) wordt bepaald door de transformatie (Get Actor Transform) van de SM_Brush.
  • De gespawnde Actor wordt opgeslagen in een variabele Vuur. Het is dit Vuur dat via DestroyActor vernietigd wordt.
  • Door een Flip Flop wordt alternatief de Actor gespawnd en destroyed.

Voorbeeld – Destroy

Onderstaand voorbeeld komt uit de Projectile Blueprint van de FirstPerson Template. Het projectiel is dat gele balletje dat u afvuurt.

Er wordt gecontroleerd (Branch) of het component dat geraakt is (Other Comp) Physics simuleert (Is Simulating Physics). Is dit het geval dan wordt Impuls toegevoegd op de locatie waar het geraakt is (Add Impulse at Location). Deze locatie wordt bepaald door de locatie (Get Actor Location)van het projectiel, de impuls wordt bepaald door de Velocity (Get Velocity) van het projectiel versterkt (vermenigvuldigd) met 100. Uiteindelijk wordt het projectiel vernietigd (Destroy Actor Target = self).


Possess

Possessing is het controleren van een Pawn of Character. De Pawn of Character die u controleert kan door u bestuurd worden.

  • Ga naar de Level Blueprint en zoek naar Possess, u zal niets vinden.
  • Possessing kan enkel vanuit de Player Controller.

Onderstaande code toont hoe u via een druk op een toets een bepaald Character possesst.


Respawn

Respawning is uw karakter terug in de game brengen. Dit kan gebeuren in de GameMode.

Onderstaande Blueprint respawnt een HeroCharacter (uit het Twin Stick Shooter project) en neemt de controle van dit karakter in handen (Possess). RespawnPlayer is een zelfgemaakte Custom Event en PlayerSpawnTransform een variabele.

De locatie, de Player Spawn Transform wordt bepaalt in de klasse HeroCharacter.

Onderstaande Blueprint toont dit, de GameMode is TwinStickMode (het lopende project).

Het respawnen zelf gebeurt nadat gecontroleerd wordt of uw karakter “dood” is en voor het karakter vernietigd wordt (DestroyActor), in onderstaand voorbeeld samen met zijn wapen. In onderstaand voorbeeld is GameMode de variabele die in bovenstaand voorbeeld is aangemaakt.


Projectielen

U hebt wellicht al gemerkt dat u een geel balletje kunt afschieten in een First Person Project. Laten we even van dichterbij bekijken hoe dit werkt.

  • Start een nieuw First Person project, of start een reeds bestaand First Person Project, we gaan enkel rondkijken.
  • In de map FirstPersonBPBlueprints vindt u FirstPersonProjectile.

  • Dubbelklik om te openen.
  • U ziet de Event Hit die uitgevoerd wordt als het projectiel iets raakt.
  • Als het geraakte component Simulate Physics dan wordt een kracht toegepast via Add Impulse at Location. De Impulse wordt bepaald door de Velocity van het projectiel, vermenigvuldigd met een waarde. De locatie wordt bepaald door GetActorLocation, de Actor is het projectiel zelf.
  • Tenslotte wordt het projectiel vernietigd via Destroy Actor met Target Self.

  • U ziet ook dat er een Projectile Movement Component is toegevoegd.

  • Het Projectile Movement Component voegt heel wat eigenschappen toe aan de Actor.

  • Merk dat de Initial Speed, Max Speed en de Velocity voor de X-as op 3000 geplaatst is.

Projectielen dienen eveneens gespawned te worden als uw FirstPerson Character vuurt. De programmeercode staat dan ook bij FirstPersonCharacter.

Er gebeurt hier van alles, er wordt een montage gespeeld, geluid wordt afgespeeld,… maar de essentie, de eigenlijk Spawn gebeurt als volgt:

Door de Speed, toegekend in het Projectile Movement Component krijgt het projectiel zijn beweging, direct na het spawnen

Radial Force Component

Radial Force Component wordt gebruikt om een ontploffing te simuleren.

De programmeercode staat ook bij FirstPersonCharacter.

De granaat dient gespawned te worden. Het afvuren van de granaat gebeurt hier via Set Physics Linear Velocity.


Project Twin Stick Shooter – Respawn

De video’s vindt u op Twin Stick Shooter with Blueprint (unrealengine.com).

Bekijk de video’s:

  • Respawning the Hero
  • Spawning Enemies
  • Clean up Respawning Projectiles

Quickshots

Quickshots zijn korte, op zichzelf staande video’s, rond een specifiek onderwerp. Meestal aansluitend bij wat net besproken is.

Pickup

Custom Projectile

Spawning Physics Actors

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.