Categorie: Highlight

  • Game Jam – Young and Old

    Game Jam – Young and Old

    Schooljaar 3 periode 1 

    In periode 1 van schooljaar 2025 – 2026 hadden we een game jam voor 1 week. De project was een Game gemaakt met Unity C#. Ik had toen besloten om de UI te gaan programmeren. Ik had dus toen de Main Menu, Settings en Win screen gemaakt. 

    Main Menu

    Pause Menu

    
    public class MainMenu : MonoBehaviour
    {
        [Header("Panels")]
        public GameObject mainMenuPanel;    
        public GameObject settingsPanel;
    
        [Header("Settings Controls")] 
        public Slider volumeSlider;
        public Toggle fullscreenToggle;
        
    
        private void Start()
        {
            mainMenuPanel.SetActive(true);
            settingsPanel.SetActive(false);
    
            // Initialize settings from PlayerPrefs
            volumeSlider.value = PlayerPrefs.GetFloat("Volume");
            fullscreenToggle.isOn = PlayerPrefs.GetInt("Fullscreen") == 1;
        }
    
        public void PlayGame()
        {
            // Load the main game scene
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }
    
        public void QuitGame()
        {
            // Quit the application
            Debug.Log("Quit Game!");
            Application.Quit();
        }
    
        public void OpenSettings()
        {
            mainMenuPanel.SetActive(false);
            settingsPanel.SetActive(true);
        }
    
        public void BackToMenu()
        {
            mainMenuPanel.SetActive(true);
            settingsPanel.SetActive(false);
        }
    
        public void SetVolume(float value)
        {
            AudioListener.volume = value;
            PlayerPrefs.SetFloat("Volume", value);
        }
    
        public void SetFullscreen(bool isFullscreen)
        {
            Screen.fullScreen = isFullscreen;
            PlayerPrefs.SetInt("Fullscreen", isFullscreen ? 1 : 0);
        }
    }

    Main Menu Script

  • Ultrakill-Slideshow

    Ultrakill-Slideshow

    In periode 2 van schooljaar 2024 – 2025 kregen we een slideshow en kon je kiezen welke game je moest namaken. Ik had toen Ultrakill gekozen en gingen we samenwerken met Game-Artists. Het groepje bestond uit 3 Game-Developers en 3 Game-Artists. We  deden er ongeveer 10 weken over om het spel na te maken.

    Health en stamina systeem

    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);
            }
        }
    
        void Update()
        {
            //Geeft 10 damage als je op Q drukt.
    
            if (Input.GetKeyDown(KeyCode.Q))
            {
                TakeDamage(10f);
            }
    
            //Geeft de speler 10 health terug als je op E drukt.
    
            if (Input.GetKeyDown(KeyCode.E))
            {
                Heal(10f);
            }
    
            //Restart de game als je dood gaat en een death screen krijgt.
    
            if (deathScreen.activeSelf && Input.GetKeyDown(KeyCode.R))
            {
                RestartGame();
            }
        }
    
        public void TakeDamage(float damage) 
        { 
            //Zorgt ervoor dat als je damage krijgt dat het van de healthbar af gaat.
            currentHealth -= damage;
            currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
    
            if (healthBar != null) 
            {
                healthBar.value = currentHealth;
            }
            //Als de speler minder dan 0 health heeft gaat de speler dood.
            if (currentHealth <= 0)
            {
                Die();
            }
        }
    
        public void Heal(float amount) 
        { 
            //Zorgt ervoor dat als je healed dat je health bij je healthbar krijgt.
            currentHealth += amount;
            currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
    
            if (healthBar != null)
            {
                healthBar.value = currentHealth;
            }
        }
    
        private void Die() 
        {
            //Zorgt ervoor dat als je dood bent dat het de deathScreen activeert en de tijd van de spel op stop zet.
            Debug.Log("Player is dead!");
            if (deathScreen != null) 
            {
                deathScreen.SetActive(true);
            }
            Time.timeScale = 0f;
        }
    
        public void RestartGame()
        {
            //Zorgt ervoor dat als je de spel restart dat de tijd weer doorgaat en dat de scene wordt terug geladen.
            Time.timeScale = 1f;
            SceneManager.LoadScene(SceneManager.GetActiveScene().name);
        }
    }

    Health script

    public class PlayerDash : MonoBehaviour
    {
        [Header("Movement Settings")]
        public float moveSpeed = 5f; 
        public float dashSpeed = 20f;
        public float dashDuration = 0.2f;
        public float dashCooldown = 1f; 
    
        private CharacterController controller;
        private Vector3 moveDirection;
        private bool isDashing = false;
        private float dashTime;
        private float lastDashTime;
    
        [Header("Camera Settings")]
        public Transform cameraTransform;
        public float dashShakeIntensity = 0.1f;
    
        [Header("Stamina Settings")]
        public int maxDashes = 3;
        private int currentDashes;
        public float staminaRechargeTime = 3f;
        private float staminaRechargeTimer;
    
        [Header("UI")]
        public Slider staminaBar; 
        void Start()
        {
            //De speler begint met max 3 dashes als je de game opstart
            controller = GetComponent<CharacterController>();
            currentDashes = maxDashes;
    
            if(staminaBar != null)
            {
                staminaBar.maxValue = maxDashes;
                staminaBar.value = currentDashes;
            }
        }
    
        
        void Update()
        {
            if (!isDashing)
            {
                HandleMovement();
                HandleDashInput(); 
            }
            else 
            {
                DashMove(); 
            }
            RechargeStamina();
        }
    
        //Zorgt ervoor dat de player kan bewegen in de goeie directie. 
    
        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(); 
            }
        }
    
    
        //Zorgt ervoor dat de dash begint en neemt ook stamina af als je dashed.
        void StartDash()
        {
            isDashing = true; 
            dashTime = Time.time + dashDuration;
            lastDashTime = Time.time;
    
            currentDashes--; 
    
            if (staminaBar != null)
            {
                staminaBar.value = currentDashes;
            }
        }
    
        //Zorgt ervoor dat de player dashed in de goeie richting met de juiste velocity.
    
        void DashMove()
        {
            Vector3 dashVelocity = moveDirection * dashSpeed; 
            controller.Move(dashVelocity * Time.deltaTime);
    
            cameraTransform.localPosition += Random.insideUnitSphere * dashShakeIntensity; 
    
            if (Time.time >= dashTime)
            {
                isDashing = false; 
                cameraTransform.localPosition = new Vector3(0, 1.8f, 0);
            }
        }
    
        //Laat de player stamina rechargen na een paar secondes.
    
        void RechargeStamina()
        {
            if (currentDashes < maxDashes)
            {
                staminaRechargeTimer += Time.deltaTime; 
    
                if(staminaRechargeTimer >= staminaRechargeTime)
                {
                    currentDashes++;
                    staminaRechargeTimer = 0;
    
                    if(staminaBar != null)
                    {
                        staminaBar.value = currentDashes;
                    }
                }
            }
        }
    }
    

    Dash script