using System.Collections; using System.Collections.Generic; using UnityEngine; public abstract class Switchable : MonoBehaviour { public virtual void OnSwitch(bool on) { } } public class Switch : MonoBehaviour { public Switchable target; public Transform bar; public Vector2 rotationRange; private bool m_IsOn; private void Start() { m_IsOn = false; OnPressed(); } private void Update() { if(Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit info; if (Physics.Raycast(ray, out info)) { if(info.collider.gameObject == gameObject) { m_IsOn = !m_IsOn; OnPressed(); if (target != null) { target.OnSwitch(m_IsOn); } } } } } void OnPressed() { if(m_IsOn) { bar.localRotation = Quaternion.Euler(0, 0, rotationRange.x); } else { bar.localRotation = Quaternion.Euler(0, 0, rotationRange.y); } } }