Inhoud
- Wat vooraf ging
- Inleiding
- Wat moet de Plafondlamp doen?
- Wat hebben we ter beschikking?
- Construction Script
- Line Trace
- Testen
Wat vooraf ging
- U bent vertrouwd met de werkomgeving van Unreal Engine.
- U bent vertrouwd met Blueprint Visual Scripting.
- Deze handleiding maar deel uit van de reeks AEC Blueprints stap voor stap.
Inleiding
Deze handleiding is geïnspireerd door deze tutorial op de Unreal Engine Learning website.
In deze handleiding werken we een Plafondlamp uit.
De bedoeling van deze handleiding is om stap voor stap een aantal belangrijke programmeertechnieken toe te passen.
Het is niet de bedoeling van deze handleiding om in detail te gaan, de bedoeling is om snel tot een werkend resultaat te komen. De details vindt u in andere handleidingen die ik in deze handleiding link. In tegenstelling tot de meeste van mijn andere handleidingen ga ik deze handleiding niet uitbreiden/verdiepen met aanvullende video’s.
Situering van deze handleiding binnen Unreal Engine
Wat moet de Plafondlamp doen?
Een Plafondlamp moeten we aanbrengen tegen het plafond. Om het plaatsen te vergemakkelijken willen we dat de Plafondlamp automatisch snapt tegen het plafond.
- Tijdens het (ver)plaatsen van een Actor in een Level wordt de Construction Script uitgevoerd.
- Bij het (ver)plaatsen van de Actor moeten we zijn huidige locatie kennen.
- Om te testen of de Plafondlamp zich onder een plafond bevindt kunnen we een Line Tracing uitvoeren.
- Bij een Hit van de Line Trace moet de Plafondlamp snappen tegen het plafond.
Welke programmeertechnieken worden gebruikt?
Onderstaande programmeertechnieken komen aan bod:
Wat hebben we ter beschikking?
Het project, dat we geïnstalleerd hebben in de inleidende handleiding, heeft ons het nodige materiaal aangereikt.
We werken enkel met:
- Ceiling_Light (dit had beter de naam BP_Ceiling_Light gekregen)
Construction Script
We willen dat de Ceiling_Light automatisch snapt tegen het plafond als het in de buurt komt van een plafond.
De programmeercode die uitgevoerd wordt bij het (ver)plaatsen van een Actor in een Level wordt geplaatst in de Construction Script van de Blueprint.
- Open de Blueprint Ceiling_Light.
Blijf even staan in de Viewport.
Die witte bol, dat is de DefaultSceneRoot, de eigenlijke locatie en rotatie van de Actor in een Level. We gaan deze zo dadelijk nodig hebben.
- Ga naar de Construction Script.
U vertrekt met programmeren vanuit de Construction Script-node.
Line Trace
Net als bij de Lichtschakelaar gaan we opnieuw een Line Trace gebruiken. U zal merken dat deze heel gelijkaardig loopt aan de Line Trace voor de Lichtschakelaar ook al heeft het een ander doel. Omdat we reeds een Line Trace gemaakt hebben ga ik er nu wat sneller door en focus me op de verschillen.
We moeten de locatie van de Ceiling_Light kennen voor de Start van de Line Trace.
- Sleep de DefaultSceneRoot in de Construction Script en zoek vervolgend naar GetWorldLocation om de locatie van de Actor op te vragen.
De Line Trace moet naar boven gericht zijn, we wensen immers de Ceiling_Leight tegen het plafond te plaatsen. Hiertoe hebben we de Up vector van de Actor nodig.
- Klik met de rechtermuisknop in de Construction Graph en zoek naar Get Up Vector.
- Let op, u hebt meerdere keuzes, we moeten de Get Actor Up Vector hebben. De Target is de huidige Actor, Self.
- De Line Trace moet nu maar bv. 100 cm naar boven tracen. We vermenigvuldigen de Actor Up Vector met een float van 100 (vector * float) en tellen dit resultaat op bij de WorldLocation van de DefaultSceneRoot (vector + vector).
- Voeg een LineTraceByChannel toe en verbind zoals hieronder.
- Trek vanuit de Return Value-pin van de LineTraceByChannel (een Boolean) een verbindingslijn naar een Branch en verbind de Exec-pins.
- Trek een verbindingslijn vanuit de LinetraceByChannel Hit Out-pin en kies voor Break Hit Result.
- We gaan nu de Location van de Break Hit Result gebruiken als New Location voor de DefaultSceneRoot via Set World Location. Dit zorgt ervoor de Ceiling_Light snapt tegen het gevonden plafond.
- Verbind de SetWorldLocation-node met de True-pin van de Branch-node.
- Compile en Save.
Testen
Als u, niet tijdens het spelen, maar tijdens het bouwen van een Level, een Ceiling_Light in de buurt (100 cm) van een Actor die zich bevindt boven de Ceiling_Light brengt, zal de Ceiling_Lightsnappen naar deze bovenste Actor.