summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Test/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts')
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestB2.cs79
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestB2.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBomb.cs67
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBomb.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs28
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs70
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestSpaceBeam.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs11
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];
}
}