summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
diff options
context:
space:
mode:
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs')
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs145
1 files changed, 0 insertions, 145 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
deleted file mode 100644
index 3a73d21..0000000
--- a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
+++ /dev/null
@@ -1,145 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class TestWaspRobot : MonoBehaviour
-{
- [SerializeField] private TopDownTransform m_Follow;
-
- [SerializeField] private float m_MoveSpeed;
-
- private SpriteRenderer m_SpriteRenderer;
- private TopDownTransform m_Coords;
-
- // wasp»·ÈÆ
- [SerializeField] private float m_Radius;
-
- [SerializeField] private List<Sprite> m_Sprites;
-
- private bool m_Following;
-
- private float m_Angle;
-
- private float m_OrbitSpeed = 3f;
-
- enum State
- {
- None,
- Move,
- Orbit,
- }
-
- private State m_State = State.None;
-
- private Coroutine m_Coroutine;
-
- private void Start()
- {
- m_SpriteRenderer = GetComponent<SpriteRenderer>();
- m_Coords = GetComponent<TopDownTransform>();
-
- m_Following = false;
- m_Angle = 0;
-
- ChangeState(State.Move);
- }
-
- private void ChangeState(State state)
- {
- if(m_State != state)
- {
- //Debug.Log(m_State.ToString() + "->" + state.ToString());
-
- if(m_Coroutine != null)
- {
- StopCoroutine(m_Coroutine);
- }
- m_State = state;
- m_Coroutine = StartCoroutine("co" + m_State.ToString());
- }
- }
-
- void Update()
- {
-
- float distance = (m_Follow.positionOnGround - m_Coords.positionOnGround).magnitude;
- m_Following = distance > m_Radius + 0.1f;
-
- if(m_Following)
- {
- ChangeState(State.Move);
- }
- else
- {
- ChangeState(State.Orbit);
- }
-
- }
-
- IEnumerator coMove()
- {
- while (true)
- {
- if (m_Following)
- {
- Vector2 dir = (m_Follow.positionOnGround - m_Coords.positionOnGround).normalized;
-
- Vector2 posOnGround = m_Coords.positionOnGround;
- posOnGround.x += m_MoveSpeed * Time.deltaTime * dir.x;
- posOnGround.y += m_MoveSpeed * Time.deltaTime * dir.y;
-
- m_Coords.positionOnGround = posOnGround;
-
- float rad = GetAngleToTarget();
-
- int index = GetSpriteIndex(rad);
- SetSprite(index);
- }
-
- yield return null;
- }
- }
-
- IEnumerator coOrbit()
- {
- m_Angle = GetAngleToTarget();
-
- while (true)
- {
- m_Angle += Time.deltaTime * m_OrbitSpeed;
-
- Vector2 centre = m_Follow.positionOnGround;
- centre += new Vector2(Mathf.Cos(m_Angle), Mathf.Sin(m_Angle)).normalized * m_Radius;
- m_Coords.positionOnGround = Vector2.Lerp(m_Coords.positionOnGround, centre, 0.25f);
-
- int index = GetSpriteIndex(m_Angle);
- SetSprite(index);
-
- yield return null;
- }
- }
-
- float GetAngleToTarget()
- {
- Vector2 posOnGround = m_Coords.positionOnGround;
- Vector2 target = m_Follow.positionOnGround;
-
- Vector2 dir = (posOnGround - target).normalized;
-
- return Mathf.Atan2(dir.y, dir.x) + 2 * Mathf.PI * TestMathHelper.Check(dir.y < 0);
- }
-
- // angle rad
- int GetSpriteIndex(float rad)
- {
- int index = ((int)Mathf.Floor(((rad * Mathf.Rad2Deg) % 360) / 30)) % 12;
- index = Mathf.Clamp(index, 0, m_Sprites.Count - 1);
- return index;
- }
-
- void SetSprite(int index)
- {
- m_SpriteRenderer.sprite = m_Sprites[index];
- }
-
-}