Programmeren van een 3D omgeving in Unreal Engine – Simulaties – Drive Simulation

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Inleiding

De bedoeling van deze handleiding is een inleiding, een aanzet te geven, om een Flight Simulator te ontwerpen.

Deze handleiding zal uitgebreid worden als ik meer nuttige informatie vind (of ontwerp).

Neem alvast ook een kijkje in de officiële Unreal Engine documentatie en naar onderstaande video, gemaakt met Unreal Engine.


Advanced Vehicle Template

Unreal Engine komt met een eenvoudige Advanced Vehicle Template.

  • Open een nieuw project op basis van de Advanced Vehicle Template.
  • In de Content Browser, onder VehicleAdvBPBlueprints vindt u VehicleBlueprint.
  • Dubbelklik om te openen.

Aan een voertuig (Vehicle) kunt u een VehicleMovement component toevoegen.

Dit VehicleMovement component bevat tal van eigenschappen die u kunt instellen.

De besturing is heel eenvoudig, u roept gewoon een aantal voorgeprogrammeerde functies aan.

Mario Kart boost

We hebben het allemaal wel eens gespeeld, jaja geef maar toe, Mario Kart. Mario Kart bevat een aantal “platformen” dat de snelheid een boost geeft.

Hieronder ziet u een eigen uitwerking van deze “boost”. Wellicht een erg vereenvoudigde, maar werkende, oplossing.

Ik ga het project niet volledig uitwerken en beperk me tot de code. Ik gebruikte hiervoor een Advanced Vehicle Project.

Maak een Bluepint Class aan dat het “platform” bevat en een Box Collision component (bv. met de naam Trigger). Voeg ook een Arrow component toe die de richting, waarin moet overlapt worden, aangeeft.

In de Event Graph voegt u onderstaande code toe.

  • Bij het einde van de overlapping van de Box Collision (met de naam Trigger), dus bij een On component End Overlap-event, Cast to VehicleBlueprint (want enkel wagens krijgen een boost en geen per toeval overlopend konijntje).
  • Het overlappende voertuig heb ik in de variabele Voertuig bewaard voor later hergebruik.
  • Ik vraag de snelheid op via Get Velocity en bewaar deze in de variabele Snelheid (door de Velocity op te vragen en niet de Forward Vector kan het voertuig ook achterwaarts rijdend een boost krijgen).
  • Get Forward Vector van de Arrow levert ons de richting van het overlappende “platform” op (deze Arrow is een component in de Blueprint van het “platform”).
  • Nu we beiden richtingen, van het voertuig en van het “platform” kennen vergelijken we deze met een Dot product.
  • Indien het Dot Product een positieve waarde oplevert hebben het voertuig en het “platform” eenzelfde richting, en wordt de Boost toegepast.
  • Voor de Boost heb ik een eigen Custom Event aangemaakt. Gewoon, om het overzichtelijk te houden, dus niet uit “technische” redenen.
  • Ik heb ervoor gekozen dat de Boost 4 seconden duurt en een verdubbeling van de snelheid teweeg brengt. Ik gebruik hiervoor een tijdslijn die van 1 naar 2 gaat gedurende 1 seconde, nadien 2 seconden op 2 blijft en nadien weer gedurende 1 seconde terugzakt naar 1. Dit is de Versnelling.

  • De tijdslijn wordt telkens, bij iedere nieuwe overlapping, van het begin (Play from Start) afgespeeld.
  • De tijdslijn levert een Versnelling op (een waarde tussen 1 en 2) en deze Versnelling wordt vermenigvuldigd met de Snelheid (vastgelegd bij het overlappen, het is deze snelheid waarmee overlapt werd dat verdubbeld wordt).
  • Deze nieuwe snelheid wordt toegekend aan de parameter New Vel van de functionaliteit Set Physics Linear Velocity, de Target is het Voertuig (meer bepaald de Mesh van het voertuig).

Physics


Videotutorial – Racing – Time Attack System

Onderstaande videotutorial is de basis voor een Race Game.

  • Op een racing circuit moet u proberen de beste tijd te behalen per ronde (lap) of u kunt gaan voor de beste eindtijd.
  • U voegt Checkpoints toe.
  • Bij een ongeluk Respawnt u aan het vorig gepasseerde checkpoint.
  • Een uitgebreide HUD geeft u alle informatie.
  • De 3 beste tijden worden opgeslagen.

U kunt het project hier downloaden.

Het project is een uitwerking van onderstaande videoserie.

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.