diff options
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs')
-rw-r--r-- | AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs | 75 |
1 files changed, 55 insertions, 20 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs index 0af8d53..2ec06e0 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs @@ -15,6 +15,7 @@ public class TestPeaceMaker : MonoBehaviour [SerializeField] private TestPeaceMakerBullet m_Bullet; [SerializeField] private TestPeaceMakerGrenade m_Grenade; [SerializeField] private Vector2 m_Zoom; + [SerializeField] private GameObject m_LaunchVfx; private Vector3 zoomIn { @@ -36,6 +37,7 @@ public class TestPeaceMaker : MonoBehaviour private SpriteRenderer m_SpriteRenderer; private TestFakeHeight m_FakeHeight; private Coroutine m_CoFire; + private Coroutine m_CoLaunchGrenade; private Vector3 m_PreMouse; @@ -68,12 +70,11 @@ public class TestPeaceMaker : MonoBehaviour SetAim(); bool isFire = Fire(); - - LaunchGrenade(); + bool isGrenade = LaunchGrenade(); CameraFollow(); - CameraZoom(/*isMove ||*/ isFire); + CameraZoom(/*isMove ||*/ isFire || isGrenade); } void CameraZoom(bool zout) @@ -107,7 +108,9 @@ public class TestPeaceMaker : MonoBehaviour float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical"); - if (x != 0 || y != 0) + bool isMove = x != 0 || y != 0; + + if (isMove) { Vector2 direction = new Vector2(x, y).normalized; @@ -129,7 +132,7 @@ public class TestPeaceMaker : MonoBehaviour } } - return x != 0 || y != 0; + return isMove; } void SetAim() @@ -200,24 +203,32 @@ public class TestPeaceMaker : MonoBehaviour return true; } - void LaunchGrenade() + bool LaunchGrenade() { - if (Input.GetButtonDown("Fire2")) + if (Input.GetButtonDown("Fire2") || (Input.GetAxis("BombTrigger") == 1)) { - 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); + if (m_CoLaunchGrenade == null) + { + m_CoLaunchGrenade = StartCoroutine(coLaunchGrenade(0.2f)); + } } + if (!Input.GetButton("Fire2") && (Input.GetAxis("BombTrigger") == 0)) + { + if (m_CoLaunchGrenade != null) + { + StopCoroutine(m_CoLaunchGrenade); + m_CoLaunchGrenade = null; + } + return false; + } + return 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; + Vector3 dirOnPlane = Quaternion.Euler(0, 0, Random.Range(-15f, 15f)) * new Vector3(m_AimDirection.x, m_AimDirection.y, 0); + dirOnPlane = dirOnPlane.normalized; + Vector3 dir = new Vector3(dirOnPlane.x, dirOnPlane.y, Random.Range(0f,0.5f)).normalized; return dir.normalized; } @@ -225,12 +236,36 @@ public class TestPeaceMaker : MonoBehaviour { while (true) { - TestPeaceMakerBullet bullet = Instantiate<TestPeaceMakerBullet>(m_Bullet); + CreateBullet(m_AimDirection, 12f, 2f); + //CreateBullet(TestMathHelper.Rotate(m_AimDirection, 10 * Mathf.Deg2Rad), 12f, 2f); + //CreateBullet(TestMathHelper.Rotate(m_AimDirection, -10 * Mathf.Deg2Rad), 12f, 2f); - bullet.transform.position = m_Arrow.transform.position + new Vector3(m_AimDirection.x, m_AimDirection.y, 0) * 1f; + yield return new WaitForSeconds(interval); + } + } + + TestPeaceMakerBullet CreateBullet(Vector2 dir, float speed, float lifeTime) + { + TestPeaceMakerBullet bullet = Instantiate<TestPeaceMakerBullet>(m_Bullet); + + bullet.transform.position = m_Arrow.transform.position + new Vector3(m_AimDirection.x, m_AimDirection.y, 0) * -0.3f; - bullet.Set(m_AimDirection, 12f, 2f); - bullet.gameObject.SetActive(true); + bullet.Set(dir, speed, lifeTime); + bullet.gameObject.SetActive(true); + + return bullet; + } + + IEnumerator coLaunchGrenade(float interval) + { + while (true) + { + 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); yield return new WaitForSeconds(interval); } |