diff options
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts')
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: |