diff options
| author | chai <215380520@qq.com> | 2024-05-23 10:10:23 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-23 10:10:23 +0800 |
| commit | 81330a6b68d307937c262368a42a3fa4e9ad4207 (patch) | |
| tree | 0616a08be385794e062fb616df4ffb503631ee08 /Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs | |
| parent | 8722a9920c1f6119bf6e769cba270e63097f8e25 (diff) | |
+ NavMeshTest
Diffstat (limited to 'Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs')
| -rw-r--r-- | Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs b/Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs new file mode 100644 index 0000000..1312616 --- /dev/null +++ b/Other/NavMeshTest/Assets/Scripts/Prop/Switch.cs @@ -0,0 +1,63 @@ +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); + } + } + +}
\ No newline at end of file |
