From 8a8a560e5cae0a414616045a0c882e3bd98d9b06 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 20 Apr 2022 20:42:02 +0800 Subject: * space beam --- AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs (limited to 'AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs') diff --git a/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs b/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs new file mode 100644 index 0000000..3683e43 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs @@ -0,0 +1,70 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// +/// Ì«¿ÕÉäÏß +/// +public class TestSpaceBeam : MonoBehaviour +{ + [SerializeField] private GameObject m_Beam; + + TopDownTransform m_Coord; + + List m_Beams = new List(); + + float m_RotateSpeed = 5f; + + float m_Radius = 1f; + + int count = 8; + + float m_CurrentAngle = 0; + + private void Awake() + { + m_Coord = GetComponent(); + } + + public void Set(Vector3 posTDS) + { + m_Coord.position = posTDS; + + Vector3 groundPos = m_Coord.positionOnGround; + + for(int i = 0; i < count; ++i) + { + float angle = Mathf.PI * 2f / (float)count * i; + Vector3 pos = /*groundPos +*/ new Vector3(m_Radius * Mathf.Cos(angle), m_Radius * Mathf.Sin(angle), 0f); + GameObject beam = Instantiate(m_Beam, this.transform); + beam.GetComponent().position = pos; + beam.SetActive(true); + m_Beams.Add(beam); + } + } + + void Update() + { + m_CurrentAngle += m_RotateSpeed * Time.deltaTime; + + RotateBeams(m_CurrentAngle); + } + + /// + /// Ðýת + /// + /// »¡¶È + void RotateBeams(float angle) + { + Vector3 groundPos = m_Coord.positionOnGround; + + for (int i = 0; i < m_Beams.Count; ++i) + { + float rad = angle + Mathf.PI * 2f / (float)count * i; + Vector3 pos = /*groundPos + */new Vector3(m_Radius * Mathf.Cos(rad), m_Radius * Mathf.Sin(rad), 0f); + m_Beams[i].GetComponent().position = pos; + } + + } + +} -- cgit v1.1-26-g67d0