Advertisement
gameDevTeacher

LayerManager

May 31st, 2021
953
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.InputSystem;
  4.  
  5. public class LayerManager : MonoBehaviour
  6. {
  7.     public static LayerMask WhatIsGround;
  8.     private SpriteRenderer m_SpriteRenderer;
  9.     private GameObject m_Obj;
  10.     [SerializeField] private float m_Timer;
  11.  
  12.     private Sprite[] sprites;
  13.    
  14.     [SerializeField] private float time;
  15.     private void Start()
  16.     {
  17.         m_Obj = gameObject;
  18.         m_SpriteRenderer = GetComponent<SpriteRenderer>();
  19.        
  20.     }
  21.  
  22.     public enum LayerState
  23.     {
  24.         Default,
  25.         Red,
  26.         Blue,
  27.         Yellow,
  28.         Green,
  29.     }
  30.  
  31.     public LayerState layers;
  32.  
  33.  
  34.     // Update is called once per frame
  35.     private void Update()
  36.     {
  37.         if (m_Timer > 0)
  38.         {
  39.             m_Timer -= 1 * Time.deltaTime;
  40.         }
  41.         else
  42.         {
  43.             //layers = LayerState.Default;
  44.         }
  45.  
  46.         switch (layers)
  47.         {
  48.             case LayerState.Default:
  49.                 SetState(0, "Ground", null, Color.white);
  50.                 break;
  51.             case LayerState.Red:
  52.                 SetState(6, "Ground", "Red", Color.red);
  53.                 break;
  54.             case LayerState.Blue:
  55.                 SetState(7, "Ground", "Blue", Color.blue);
  56.                 break;
  57.             case LayerState.Yellow:
  58.                 SetState(8, "Ground", "Yellow", Color.yellow);
  59.                 break;
  60.             default:
  61.                 throw new ArgumentOutOfRangeException();
  62.         }
  63.     }
  64.  
  65.     private void OnTriggerEnter2D(Collider2D other)
  66.     {
  67.         // Colliding with Crystals to change players Layer
  68.         switch (other.tag)
  69.         {
  70.             // If we collide with objects with the RedCrystal tag
  71.             case "RedCrystal":
  72.                 // Change our LayerState to red
  73.                 layers = LayerState.Red;
  74.                 ResetTime();
  75.                 break;
  76.             case "BlueCrystal":
  77.                 layers = LayerState.Blue;
  78.                 ResetTime();
  79.                 break;
  80.             case "YellowCrystal":
  81.                 layers = LayerState.Yellow;
  82.                 ResetTime();
  83.                 break;
  84.             case "Enemy":
  85.                 layers = LayerState.Default;
  86.                 break;
  87.             default:
  88.                 throw new ArgumentOutOfRangeException();
  89.         }
  90.     }
  91.  
  92.     private void SetState(int layer, string layer1, string layer2, Color color)
  93.     {
  94.         print((int)layers);
  95.        
  96.         // Set the objects Player to the correct Phsycis Layer
  97.             m_Obj.layer = layer;
  98.         // Change whatisGround so that you only can jump on what you can interact with
  99.             WhatIsGround = LayerMask.GetMask(layer1, layer2);
  100.         // Change the colour of the sprite to reflect the colour of the layer
  101.             m_SpriteRenderer.color = color;
  102.         // Change the sprite to a different sprite to reflect the layer
  103.             //m_SpriteRenderer.sprite = sprites[(int) layers];
  104.        
  105.     }
  106.  
  107.     private void ResetTime()
  108.     {
  109.         m_Timer += time;
  110.        
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement