diff options
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts')
6 files changed, 103 insertions, 23 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs index 0ab48da..1ccd825 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestDestroySelf.cs @@ -6,10 +6,18 @@ public class TestDestroySelf : MonoBehaviour { public float lifeTime; + public AnimationCurve alphaCurve; + + private float time; + + private SpriteRenderer sr; + void Start() { Invoke("DestroySelf", lifeTime); - } + time = 0; + sr = GetComponent<SpriteRenderer>(); + } void DestroySelf() { @@ -17,4 +25,14 @@ public class TestDestroySelf : MonoBehaviour Destroy(this.gameObject); } + void Update() + { + time += Time.deltaTime; + + Color c = sr.color; + c.a = alphaCurve.Evaluate(time / lifeTime); + + sr.color = c; + } + } diff --git a/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs new file mode 100644 index 0000000..e2ca833 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestMathHelper : MonoBehaviour +{ + + public static Vector2 Rotate(Vector2 v, float delta) + { + return new Vector2( + v.x * Mathf.Cos(delta) - v.y * Mathf.Sin(delta), + v.x * Mathf.Sin(delta) + v.y * Mathf.Cos(delta) + ); + } + +}
\ No newline at end of file diff --git a/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs.meta new file mode 100644 index 0000000..872d038 --- /dev/null +++ b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c40b8edb8d6570e419f024263e4cc43a +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 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); } diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs index 38dc2f5..109e47b 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs @@ -44,7 +44,7 @@ public class TestPeaceMakerGrenade : MonoBehaviour m_Coords.height += move.z; m_Velocity += GRAVITY * Time.deltaTime; - transform.rotation *= Quaternion.Euler(0, 0, 500 * Time.deltaTime); + transform.rotation *= Quaternion.Euler(0, 0, 100 * m_Velocity.magnitude * Time.deltaTime); } else { diff --git a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs index b310fbd..dafd7e0 100644 --- a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs +++ b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs @@ -50,7 +50,7 @@ public class TestWaspRobot : MonoBehaviour { if(m_State != state) { - Debug.Log(m_State.ToString() + "->" + state.ToString()); + //Debug.Log(m_State.ToString() + "->" + state.ToString()); if(m_Coroutine != null) { |