Programmeren van een 3D omgeving in Unreal Engine – Invoerevents

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Wat vooraf ging


Inleiding

U hebt reeds gezien dat als u in een Blueprint zoekt naar Input Keyboard u alle Keyboardevents (alle toetsen kunt vinden).

Kiest u een toets dan hebt u toegang tot een event die wordt uitgevoerd wanneer u op deze toets drukt (of hem weer loslaat).

U hebt ook reeds gezien dat als u naar de ThirdPersonCharacter Blueprint gaat er reeds een hele serie invoerevents geprogrammeerd zijn.

Bij deze laatste gaan we nu even stilstaan.


Invoerevents

  • 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 EditProject 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 BoxOn 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.

Bij het beëindigen van het overlappen van de BoxOn component End Overlap (Box)


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.


Behandelde Basiscompetenties uit de module ICT Programmeren – Specifieke ontwikkelomgeving: complexe functionaliteiten

  • IC BC251 – kan een ontwerp in een specifieke ontwikkelomgeving verfijnen
  • IC BC257 – heeft aandacht voor de gebruiksvriendelijkheid van de toepassing
  • IC BC288 – kan ICT-problemen oplossen

Behandelde Basiscompetenties uit de module ICT Programmeren – Integratie externe functionaliteiten

  • IC BC017 – kan ICT veilig en duurzaam gebruiken
  • IC BC256 – kan diverse elementen tot een nieuw betekenisvol geheel samenstellen
  • IC BC288 – kan ICT-problemen oplossen

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.