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/TestDestroySelf.cs20
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs23
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs24
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs71
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs.meta11
6 files changed, 155 insertions, 5 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs
new file mode 100644
index 0000000..0ab48da
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs
@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestDestroySelf : MonoBehaviour
+{
+ public float lifeTime;
+
+ void Start()
+ {
+ Invoke("DestroySelf", lifeTime);
+ }
+
+ void DestroySelf()
+ {
+ this.gameObject.SetActive(false);
+ Destroy(this.gameObject);
+ }
+
+}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs.meta
new file mode 100644
index 0000000..c1dc2b5
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6bde42b3ff5cbc44ca4e036544c3cde9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs b/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
index 35174a5..6f3923c 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
@@ -68,21 +68,34 @@ public class TestFakeHeight : MonoBehaviour
private void OnEnable()
{
m_SpriteRenderer = GetComponent<SpriteRenderer>();
- m_PreHeight = m_Height;
}
- void Update()
- {
+ private void Start()
+ {
+ m_PreHeight = 0;
+ Project();
+ }
+
+ void Project()
+ {
Vector3 pos = transform.position;
pos.y = pos.y - m_PreHeight + m_Height;
transform.position = pos;
- m_Shadow.position = new Vector3(transform.position.x, transform.position.y - m_Height, transform.position.z);
+ if (m_Shadow != null)
+ {
+ m_Shadow.position = new Vector3(transform.position.x, transform.position.y - m_Height, transform.position.z);
+ }
m_PreHeight = m_Height;
// 根据y设置sortOrder
- m_SpriteRenderer.sortingOrder =(int) (-y * 100);
+ m_SpriteRenderer.sortingOrder = (int)(-y * 100);
+ }
+
+ void Update()
+ {
+ Project();
}
}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
index b29bf43..0af8d53 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
@@ -13,6 +13,7 @@ public class TestPeaceMaker : MonoBehaviour
[SerializeField] private SpriteRenderer m_Arrow;
[SerializeField] private float m_ArrowRadius;
[SerializeField] private TestPeaceMakerBullet m_Bullet;
+ [SerializeField] private TestPeaceMakerGrenade m_Grenade;
[SerializeField] private Vector2 m_Zoom;
private Vector3 zoomIn
@@ -68,6 +69,8 @@ public class TestPeaceMaker : MonoBehaviour
bool isFire = Fire();
+ LaunchGrenade();
+
CameraFollow();
CameraZoom(/*isMove ||*/ isFire);
@@ -197,6 +200,27 @@ public class TestPeaceMaker : MonoBehaviour
return true;
}
+ void LaunchGrenade()
+ {
+ if (Input.GetButtonDown("Fire2"))
+ {
+ TestPeaceMakerGrenade grenade = Instantiate<TestPeaceMakerGrenade>(m_Grenade);
+
+ Vector3 position = m_FakeHeight.position + new Vector3(0, 0, 1.8f);
+
+ grenade.Set(position, GetRandomDirection(), Random.Range(8f, 10f));
+
+ grenade.gameObject.SetActive(true);
+ }
+ }
+
+ Vector3 GetRandomDirection()
+ {
+ Vector3 dirOnPlane = Quaternion.Euler(0, 0, Random.Range(-30f, 30f)) * new Vector3(m_AimDirection.x, m_AimDirection.y, 0);
+ Vector3 dir = Quaternion.Euler(Random.Range(30f, 80f), 0, 0) * dirOnPlane;
+ return dir.normalized;
+ }
+
IEnumerator coFire(float interval)
{
while (true)
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs
new file mode 100644
index 0000000..38dc2f5
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs
@@ -0,0 +1,71 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestPeaceMakerGrenade : MonoBehaviour
+{
+
+ [SerializeField] private float m_GravityScale = 1f;
+
+ [SerializeField] private GameObject m_ExplosionEffect;
+
+ private TestFakeHeight 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<TestFakeHeight>();
+
+ m_Coords.x = initPosition.x;
+ m_Coords.y = initPosition.y;
+ m_Coords.height = initPosition.z;
+
+ m_Velocity = initDirection * initSpeed;
+ }
+
+ private void Update()
+ {
+ Vector3 move = m_Velocity * Time.deltaTime;
+
+ if(m_Velocity.magnitude > 0 && m_Coords.height + move.z >= 0)
+ {
+ m_Coords.x += move.x;
+ m_Coords.y += move.y;
+ m_Coords.height += move.z;
+ m_Velocity += GRAVITY * Time.deltaTime;
+
+ transform.rotation *= Quaternion.Euler(0, 0, 500 * Time.deltaTime);
+ }
+ else
+ {
+ m_Velocity = Vector3.zero;
+
+ this.gameObject.SetActive(false);
+ Destroy(this.gameObject);
+ PlayExplosion();
+ }
+ }
+
+ private void PlayExplosion()
+ {
+ GameObject exp = Instantiate<GameObject>(m_ExplosionEffect);
+
+ TestFakeHeight coord = exp.GetComponent<TestFakeHeight>();
+ coord.x = m_Coords.x;
+ coord.y = m_Coords.y;
+ coord.height = m_Coords.height;
+
+ exp.SetActive(true);
+ }
+
+}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs.meta
new file mode 100644
index 0000000..7b95df6
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 40fc919f136c67e41a3608549bab3217
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: