Ultrakill-Slideshow

In periode 2 van schooljaar 2024-2025 kregen we de opdracht om een bestaande game na te maken. Hiervoor konden we kiezen uit verschillende games die in een slideshow werden gepresentterd. Ik heb gekozen voor ULTRAKILL. Voor dit project werkten we samen met de Game-Artists in een team van zes personene, bestaande uit drie Game-Developers en drie Game-Artists. We hebben ongeveer tien weken aan het project gewerkt.

Tijdens dit project heb ik mij als Game Developer onder andere beziggehouden met het programmeren van verschillende gameplay-systemen. Zo heb ik een health-systeem ontwikkeled waarmee de gezondheid van de speler wordt bijgehouden en weergegeven via een healthbar in de UI. Daarnaast heb ik een movement-systeem met een dash gemaakt, waarmee de speler snel kan bewegen en een beperkt aantal dashes kan gebruiken.

public class PlayerHealth : MonoBehaviour
{

    [Header("Health Settings")]
    [SerializeField] private float maxHealth = 100f;
    private float currentHealth;

    [Header("UI")]
    public Slider healthBar;
    public GameObject deathScreen; 
    void Start()
    {
        //Geeft de speler max health als je begint met het spel.

        currentHealth = maxHealth;

        if (healthBar != null)
        {     
            healthBar.maxValue = maxHealth;
            healthBar.value = currentHealth;
        }

        if (deathScreen != null) 
        { 
            deathScreen.SetActive(false);
        }
    }
}

Health script

De PlayerHealth is een script dat verantwoordelijk is voor het bijhouden van de gezondheid van de speler binnen de shooting game. Bij het starten van het spel wordt de gezondheid ingesteld op de maximale waarde van 100 HP. Daarnaast wordt de healthbar in de gebruikersinterface automatisch ingesteld op de juiste maximale en huidige gezondheid. Ook wordt het death screen bij het opstarten uitgeschakeld, zodat dit pas zichtbaar wordt wanneer de spelen sterft. Hierdoor vormt het script de basis voor het health- en death-systeem van de game.

public class PlayerDash : MonoBehaviour
{
    void HandleMovement()
    {
        float moveX = Input.GetAxis("Horizontal");
        float moveZ = Input.GetAxis("Vertical");

        moveDirection = (cameraTransform.forward * moveZ + cameraTransform.right  * moveX).normalized;
        controller.Move(moveDirection * moveSpeed * Time.deltaTime);
    }

    //Zorgt ervoor dat de player max 3 keer kan dashen met Left shift.

    void HandleDashInput()
    {
        if (Input.GetKeyDown(KeyCode.LeftShift) && currentDashes > 0)
        {
            StartDash(); 
        }
    }

}

Dash script

Het HandleMovement- en HandleDashInput-gedeelte zijn onderdeel van het movement-systeem van de speler. Met HandleMovement wordt de speler bestuurd op basis van horizontale en verticale input. De bewegingsrichting wordt hierbij aangepast aan de positie en richting van de camera, zodat de speler beweegt in de richting waarin de camera kijkt. Daarnaast bevat de script een dash-functionaliteit waarmee de speler een snelle beweging kan uitvoeren door op Left Shift te drukken. De Speler kan maximaal drie keer achter elkaar dashen, afhankelijk van het aantal keer beschikbare dashes.