Inhoud
- Wat vooraf ging
- Inleiding
- Invoerevents
- Invoermode
- Enable en Disable Input
- Project Twin Stick Shooter – Project Setup end Level building
Wat vooraf ging
- U hebt reeds kennis gemaakt met Blueprint Visual Scripting.
- U hebt reeds kennis gemaakt met de basisbegrippen van Object Georiënteerd Programmeren.
Inleiding
Invoer is nodig om uw Character te besturen. Invoer verloopt via Input Events en het is handig om eerst te bepalen via welke systemen (toetsenbord, muis, gamepad,…) u de Input Events activeert (triggert).
In deze handleiding bekijken we ook welke invoermodes er zijn en hoe u die kunt activeren.
Situering van deze handleiding binnen Unreal Engine
Invoerevents
U hebt reeds gezien dat als u in een Blueprint zoekt naar Input Keyboard u alle Keyboard events.
Kiest u een toets dan hebt u toegang tot een event die wordt uitgevoerd wanneer u op deze toets drukt (Pressed) of hem weer loslaat (Released).
- Neem eens een kijkje in de Event Graph van de ThirdPersonCharacter Blueprint. Merk op dat u hier wel events tegenkomt, meer bepaald invoerevents.
Laat ons even de Jump-functionaliteiten naderbij bekijken.
De Jump-functionaliteiten gebruiken de InputAction Jump-event (events worden altijd weergegeven in een “rode kader”).
- Als deze wordt ingeduwd (Pressed-event) wordt de Jump-functionaliteit (dit is een ingebouwde functionaliteit van de Character Class) van ons Character uitgevoerd.
- Als deze wordt losgelaten (Released-event) wordt de Stop Jumping-functionaliteit (dit is een ingebouwde functionaliteit van de Character Class) van ons Character uitgevoerd.
Oké, maar wat moeten we nu induwen of loslaten, waarvoor staat nu eigenlijk die InputAction Jump?
U vindt deze onder de Settings van het project.
- Ga naar het menu Edit – Project Settings….
- Ga onder Engine naar Input.
- Ik heb hier de Action Mappings voor Jump reeds open geklikt. Merk op dat o.a. de statiebalk gekoppeld is aan Jump. Dus het indrukken van de spatiebalk triggert de Pressed-event en het loslaten van de spatiebalk de Released-event.
Merk op dat er een onderscheid gemaakt wordt tussen:
- Action Mapping – enkel de Pressed-event (eventueel in combinatie met een andere toets zoals Shift, Ctrl, Alt of Cmd) en de Released-event worden gebruikt. Een voorbeeld van Action Mapping kunt u op het afdrukvoorbeeld hierboven zien. Action Mapping is “binair” (aan of uit, Pressed of Released) en wordt gebruikt voor acties die eveneens “binair” zijn zoals “Jump”, ofwel “Jump” je, ofwel niet.
- Axis Mapping – een meer continue reeks (je zou het kunnen omschrijven als “analoog”) van acties die per frame uitgevoerd wordt. Concreet wordt er een waarde meegegeven aan Scale. Merk op dat aan de W-toets (voorwaarts) de waarde 1.0 wordt toegekend en aan de S-toets (achterwaarts) de negatieve waarde -1.0. Zo kan MoveForward ook gebruikt worden om achterwaarts te gaan (dezelfde “truk” wordt toegepast bij MoveRight en TurnRate). Zie het afdrukvoorbeeld hieronder.
- Met de +-pijltjes kunt u Mapping groepen toevoegen.
- Met de andere +-pijltjes kunt u acties aan de Mapping groepen toevoegen.
- De gewenste acties (toetsencombinatie) kunt u vervolgens selecteren.
Meer informatie over Input vindt u in de officiële handleiding.
Invoermode
U wilt de internetpagina, weergegeven in de webbrowser, kunnen besturen en ook de besturing van het programma behouden.
Hiertoe voegt u eerst een Box Collision toe rond de actor die de webbrowser weergeeft om de code te triggeren.
Bij het beginnen overlappen van de Box – On component Begin Overlap (Box)
- zet de invoermodus op zowel Game als UI via Set Input Mode Game And UI.
- Verbind dit met de Player Controller via Get Player Controller.
- Verbind de eigenschap In Widget to Focus met de specifieke widget via Set User Widget Object die refereert naar de gebruikte widget (hier Widget Webbrowser Display).
- Bepaal dat de muiscursor moet getoond worden door Set Show Mouse Cursor aan te vinken.
- Verbind dit met de Player Controller via Get Player Controller.
Bij het beëindigen van het overlappen van de Box – On component End Overlap (Box)
- Zet de invoermodus op Game only via Set Input Mode Game Only.
- Verbind dit met de Player Controller via Get Player Controller.
- Bepaal dat de muiscursor niet moet getoond worden door Set Show Mouse Cursor uit te vinken.
- Verbind dit met de Player Controller via Get Player Controller.
Enable en Disable Input
Invoer wordt bepaald door de Player Controler die u opvraagt via Get Player Controller.
- Wenst u, tijdelijk, niet langer invoer toe te staan dan kunt u de invoer uitschakelen via de functionaliteit Disable Input.
- Wilt u de invoer (opnieuw) toestaan dan kunt u de invoer inschakelen via de functionaliteit Enable Input.
Onderstaande code toont dit in de praktijk. Wanneer een FirstPersonCharacter een TriggerBox begint te overlappen wordt de Input Enabled. Wanneer een FirstPersonCharacter een TriggerBox niet langer overlapt wordt de Input Disabled.
Let op, het kan evengoed omgekeerd zijn, Disabled bij het begin van de overlapping en Enabled bij het einde van de overlapping.
Project Twin Stick Shooter – Project Setup end Level building
We gaan van start met ons Project Twin Stick Shooter door besturing toe te voegen en ons, heel eenvoudig, level te bouwen.
De video’s vindt u op Twin Stick Shooter with Blueprint (unrealengine.com).
Bekijk de video’s:
- Project Setup
- Building the Level