UnityGameProjectsCode / InTheDarkGame / Level / Lights / LightSwitch.cs
LightSwitch.cs
Raw
using UnityEngine;
using UnityEngine.Experimental.Rendering.Universal;

public class LightSwitch : MonoBehaviour
{
    public Light2D[] targetLights;
    public GameObject switchObject;
    public SpriteRenderer keySprite;
    private KeyCode interactionKey;
    private AudioSource aSource;
    private bool playerInTrigger;

    private void Awake()
    {
        aSource = GetComponent<AudioSource>();
        interactionKey = InputManager.GetInputKey(5);
        keySprite.enabled = false;
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            keySprite.enabled = true;
            playerInTrigger = true;
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Player"))
        {
            keySprite.enabled = false;
            playerInTrigger = false;
        }
    }

    private void Update()
    {
        if (Input.GetKeyDown(interactionKey) && playerInTrigger)
        {
            aSource.Play();

            foreach (Light2D obj in targetLights)
            {
                obj.GetComponent<WallLight>().ChangeLightState();
            }

            if (switchObject.transform.localPosition.y == -0.7f)
                switchObject.transform.localPosition = new Vector3(0, -0.4f, 0);
            else if (switchObject.transform.localPosition.y == -0.4f)
                switchObject.transform.localPosition = new Vector3(0, -0.7f, 0);
        }
    }

    public void SetNewKey()
    {
        interactionKey = InputManager.GetInputKey(5);
    }
}