I started with the main mechanic, something that has to do with the theme signal. We chose the radar signal theme to create a large size map with 1 enemy where you have to find objectives to repair your ship that has crashed.


So I created a radar that shows on a tv screen. what this radar can see is: walls(map), objectives and the enemy.


I created this by using the UI in Unity, camchanges and also layermask to have certain object that the radar cam can see.


As you can see I use the unity.UI slider and changed the slider from left-to-right to radial 360 degrees. I then duplicated that same UI and reversed it. so the effect of seing the map gets reversed to also getting hidden. This gives out a low poly radar that works perfect for the genre of our game. I then turned on the cam from above that follows the player. Then I assigned all the object i want to see on the rader to the radar cam layer.

public class PhoneRadar : MonoBehaviour
    {
        private Animator phone;
    
        public GameObject radarCanvas;
        public GameObject informationCanvas;
    
        public Camera cameraOne;
        public Camera cameraTwo;
    
        public GameObject camera;
    
        private Movement playerMovement;
    
        private bool inOut = false;
        private bool usable = true;
        private float timer = 2.75f;
    
    
        private void Start()
        {
            playerMovement = GetComponent<Movement>();
    
            radarCanvas.SetActive(false);
            inOut = false;
            cameraTwo.enabled = false;
            phone = GetComponentInChildren<Animator>();
        }
    
        private void Update()
        {
            if (usable)
            {
                if (inOut == true)
                {
                    if (Input.GetKeyDown(KeyCode.Q))
                    {
                        phone.Play("Phone Flip In");
                        cameraTwo.enabled = !cameraTwo.enabled;
                        cameraOne.enabled = !cameraOne.enabled;
                        playerMovement.enabled = true;
                        radarCanvas.SetActive(false);
                        informationCanvas.SetActive(true);
                        usable = false;
                    }
                }
    
                if (inOut == false)
                {
                    if (Input.GetKeyDown(KeyCode.Q))
                    {
                        camera.transform.rotation = Quaternion.Euler(0, transform.rotation.y, transform.rotation.z);
                        playerMovement.enabled = false;
                        phone.Play("Phone Flip Out");
                        StartCoroutine(OpenRader());
                        usable = false;
                    }
                }
            }
    
            if (usable == false)
            {
                timer -= Time.deltaTime;
                if (timer <= 0)
                {
                    if (inOut == false)
                    {
                        inOut = true;
                    }
                    else if (inOut == true)
                    {
                        inOut = false;
                    }
                    timer = 2.75f;
                    usable = true;
                }
            }
        }
    
        private IEnumerator OpenRader()
        {
            yield return new WaitForSeconds(2.75f);
            cameraOne.enabled = !cameraOne.enabled;
            cameraTwo.enabled = !cameraTwo.enabled;
            radarCanvas.SetActive(true);
            informationCanvas.SetActive(false);
        }
    }
    



I also added a material that projects out a tv white noise screen.



I then created our objective of the game, the spaceship part pickups and a small and basic inventory system.

using UnityEngine.SceneManagement;
    
    public class Inventory : MonoBehaviour
    {
        public List<GameObject> items = new List<GameObject>(); 
        public List<GameObject> objectives = new List<GameObject>();
        
        private void Start()
        {
            for(int i = 0; i < objectives.count; i++)
            {
                objectives[i].SetActive(true);
            }
        }

        private void Update()
        {
            if (items.Count >= 5)
                SceneManager.LoadScene("YouWin");
        }

        public void UpdateUI()
        {
            for (int i = objectives.Count - items.Count; i < objectives.Count; i++)
            {
                objectives[i]SetActive(false);
            }
        }
    }



I also created a bit of optimization for the playerhealth when u get hit. This creates a blood splatter on your scren where the alpha of the image gets higher so it really gives the feeling of losing all your health

Using UnityEngine.SceneManagement;
    
    public class PlayerHealth : MonoBehaviour
    {
        [SerializeField]
        private Image healthImage;
        [SerializeField]
        private float currentHealth;
        
        private void Start()
        {
            currentHealth = 100;
        }

        private void Update()
        {
            timer += Time.deltaTime;
            if(currenHealth > 100)
                currenhealth = 100;
            
            if(timer > 3 && currenHealth < 100)
                currenHealth += Time.deltaTime * 5;

            healthImage.color = new color(1, 1, 1, (1 - currenHealth/100) * 1f);

            if (currentHealth <= 0)
                SceneManagement.LoadScene("YouLose");
        }

        public void TakeDamage(float damage)
        {
            currenHealth -= damage;
            timer = 0;
        }
    }



And as last thing to do on my list is making cutscenes for the game. (The videos are very dark so in light rooms it's hard to see)





Date: Jun 27, 2022

– Project: GameJam (Theme: Signal)

– Duration: 1 Week

– Team: 2 Devs, 3 Artists

My Part: Map Radar, Pick Ups, Animations, Cutscenes

Summary:

We made a game for the International Educational Game Jam 2022 our game needed some mechanic that followed the theme Signal. Our mechanic would be a radar that shows the map you move on and shows you the objectives and the enemy.