diff options
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts')
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestB2.cs | 79 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestB2.cs.meta | 11 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestBomb.cs | 67 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestBomb.cs.meta | 11 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs | 28 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs | 70 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs.meta | 11 | ||||
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs | 11 |
8 files changed, 280 insertions, 8 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestB2.cs b/AlienSurvival/Assets/Test/Scripts/TestB2.cs new file mode 100644 index 0000000..532c254 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestB2.cs @@ -0,0 +1,79 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestB2 : MonoBehaviour +{ + [SerializeField] private TestBomb m_Bomb; + [SerializeField] private float m_Speed; + + private Vector3 m_From; + private Vector3 m_To; + + private Coroutine m_CoBomb; + + Vector3 direction + { + get + { + return (m_To - m_From).normalized; + } + } + + /// <summary> + /// from to 在3d空间 + /// </summary> + /// <param name="from"></param> + /// <param name="to"></param> + public void Set(Vector3 from, Vector3 to, float speed, float lifeTime) + { + m_From = from; + m_To = to; + m_Speed = speed; + + transform.position = from; + + this.gameObject.SetActive(true); + + m_CoBomb = StartCoroutine(coBomb(0.1f)); + + Invoke("DestroySelf", lifeTime); + } + + void DestroySelf() + { + if (m_CoBomb != null) + { + StopCoroutine(m_CoBomb); + m_CoBomb = null; + } + this.gameObject.SetActive(false); + Destroy(this.gameObject); + } + + private void Update() + { + Vector3 pos = transform.position; + pos += direction * m_Speed * Time.deltaTime; + + transform.position = pos; + } + + IEnumerator coBomb(float interval) + { + while (true) + { + Vector3 pos = transform.position; + for(int i = 0; i < 1; ++i) + { + TestBomb grenade = Instantiate<TestBomb>(m_Bomb); + Vector3 position = new Vector3(pos.x + Random.Range(-3, 3), pos.y + Random.Range(-5f, 5f), 7f); + grenade.Set(position, new Vector3(0, 0, -1f), Random.Range(8f, 10f)); + grenade.gameObject.SetActive(true); + } + + yield return new WaitForSeconds(interval); + } + } + +} diff --git a/AlienSurvival/Assets/Test/Scripts/TestB2.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestB2.cs.meta new file mode 100644 index 0000000..1e507c7 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestB2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a908894d8ef917543ad67959640ec30b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AlienSurvival/Assets/Test/Scripts/TestBomb.cs b/AlienSurvival/Assets/Test/Scripts/TestBomb.cs new file mode 100644 index 0000000..77933f4 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestBomb.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestBomb : MonoBehaviour +{ + + [SerializeField] private float m_GravityScale = 1f; + + [SerializeField] private GameObject m_ExplosionEffect; + + private TopDownTransform m_Coords; + + private Vector3 GRAVITY = new Vector3(0, 0, -9.8f); + + private Vector3 m_Velocity; // x, y, fakeHeight + + /// <summary> + /// 设置初始参数,都在fake空间下 + /// </summary> + /// <param name="initPosition"></param> + /// <param name="initDirection"></param> + /// <param name="initSpeed"></param> + public void Set(Vector3 initPosition, Vector3 initDirection, float initSpeed) + { + m_Coords = GetComponent<TopDownTransform>(); + m_Coords.position = initPosition; + + m_Velocity = initDirection * initSpeed; + } + + private void Update() + { + Vector3 move = m_Velocity * Time.deltaTime; + + if (m_Velocity.magnitude > 0 && m_Coords.z + move.z >= 0) + { + m_Coords.x += move.x; + m_Coords.y += move.y; + m_Coords.z += move.z; + m_Velocity += GRAVITY * Time.deltaTime; + + //transform.rotation *= Quaternion.Euler(0, 0, 20 * m_Velocity.magnitude * Time.deltaTime); + } + else + { + m_Velocity = Vector3.zero; + + this.gameObject.SetActive(false); + Destroy(this.gameObject); + PlayExplosion(); + } + } + + private void PlayExplosion() + { + GameObject exp = Instantiate<GameObject>(m_ExplosionEffect); + + TopDownTransform coord = exp.GetComponent<TopDownTransform>(); + coord.position = m_Coords.position; + + exp.GetComponent<TopDownSorting>().Sorting(); + + exp.SetActive(true); + } + +} diff --git a/AlienSurvival/Assets/Test/Scripts/TestBomb.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestBomb.cs.meta new file mode 100644 index 0000000..06d61d2 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestBomb.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0bb267c6728269489ed4f713b032db5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs index 9e47407..f685e15 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs @@ -16,6 +16,8 @@ public class TestPeaceMaker : MonoBehaviour [SerializeField] private Vector2 m_Zoom; [SerializeField] private GameObject m_LaunchVfx; [SerializeField] private Transform m_LaunchPoint; + [SerializeField] private TestB2 m_B2; + [SerializeField] private TestSpaceBeam m_SpaceBeam; private Vector3 zoomIn { @@ -76,6 +78,10 @@ public class TestPeaceMaker : MonoBehaviour bool isFire = Fire(); bool isGrenade = LaunchGrenade(); + CallB2(); + + //SpaceBeam(); + CameraFollow(); CameraZoom(/*isMove ||*/ isFire || isGrenade); @@ -280,4 +286,26 @@ public class TestPeaceMaker : MonoBehaviour } } + void CallB2() + { + if(Input.GetButtonDown("Fire3")) + { + TestB2 b2 = Instantiate<TestB2>(m_B2); + + Vector3 pos3D = m_Coord.Get3DPosition(); + b2.Set(pos3D + new Vector3(-15, 0,0 ), pos3D + new Vector3(15, 0,0 ), 20f, 3f); + } + } + + void SpaceBeam() + { + if (Input.GetButtonDown("Fire3")) + { + TestSpaceBeam beam = Instantiate<TestSpaceBeam>(m_SpaceBeam); + + Vector3 pos3D = m_Coord.position; + beam.Set(pos3D + new Vector3(3, 0, 0)); + } + } + } 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; + +/// <summary> +/// 太空射线 +/// </summary> +public class TestSpaceBeam : MonoBehaviour +{ + [SerializeField] private GameObject m_Beam; + + TopDownTransform m_Coord; + + List<GameObject> m_Beams = new List<GameObject>(); + + float m_RotateSpeed = 5f; + + float m_Radius = 1f; + + int count = 8; + + float m_CurrentAngle = 0; + + private void Awake() + { + m_Coord = GetComponent<TopDownTransform>(); + } + + 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<GameObject>(m_Beam, this.transform); + beam.GetComponent<TopDownTransform>().position = pos; + beam.SetActive(true); + m_Beams.Add(beam); + } + } + + void Update() + { + m_CurrentAngle += m_RotateSpeed * Time.deltaTime; + + RotateBeams(m_CurrentAngle); + } + + /// <summary> + /// 旋转 + /// </summary> + /// <param name="angle">弧度</param> + 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<TopDownTransform>().position = pos; + } + + } + +} diff --git a/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs.meta new file mode 100644 index 0000000..3e008d2 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 345857a5337aab0458bb084b716eccdc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs index 665c406..3a73d21 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs @@ -4,14 +4,12 @@ using UnityEngine; public class TestWaspRobot : MonoBehaviour { - [SerializeField] private TestFakeHeight m_Follow; - - [SerializeField] private SpriteRenderer m_Shadow; + [SerializeField] private TopDownTransform m_Follow; [SerializeField] private float m_MoveSpeed; private SpriteRenderer m_SpriteRenderer; - private TestFakeHeight m_Coords; + private TopDownTransform m_Coords; // wasp环绕 [SerializeField] private float m_Radius; @@ -38,7 +36,7 @@ public class TestWaspRobot : MonoBehaviour private void Start() { m_SpriteRenderer = GetComponent<SpriteRenderer>(); - m_Coords = GetComponent<TestFakeHeight>(); + m_Coords = GetComponent<TopDownTransform>(); m_Following = false; m_Angle = 0; @@ -94,8 +92,6 @@ public class TestWaspRobot : MonoBehaviour float rad = GetAngleToTarget(); - Debug.Log(rad * Mathf.Rad2Deg); - int index = GetSpriteIndex(rad); SetSprite(index); } @@ -144,7 +140,6 @@ public class TestWaspRobot : MonoBehaviour void SetSprite(int index) { m_SpriteRenderer.sprite = m_Sprites[index]; - m_Shadow.sprite = m_Sprites[index]; } } |