summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Test/Scripts
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-04-18 15:48:28 +0800
committerchai <chaifix@163.com>2022-04-18 15:48:28 +0800
commitdc5edaf1025ff4cebaa41eba9a36f854b80d91ec (patch)
tree6d7a0c789506397f0262c5b3f1eb86ffddde97f8 /AlienSurvival/Assets/Test/Scripts
parentb1882e100887ff1ce6cd6902109a25aea4a20fa5 (diff)
*misc
Diffstat (limited to 'AlienSurvival/Assets/Test/Scripts')
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs107
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBucket.cs35
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestBucket.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs27
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs27
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMakerBullet.cs12
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs33
8 files changed, 223 insertions, 40 deletions
diff --git a/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs b/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs
new file mode 100644
index 0000000..4399886
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs
@@ -0,0 +1,107 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestBrokenPiece : MonoBehaviour
+{
+ [SerializeField] private List<Sprite> m_Pieces;
+
+ private TestFakeHeight m_Coord;
+
+ private Vector3 m_Velocity;
+
+ private Vector3 m_Gravity = new Vector3(0, 0, -9.8f);
+
+ private float m_Damp = 0.5f;
+
+ private SpriteRenderer m_SpriteRenderer;
+
+ enum State
+ {
+ Avlie ,
+ Dead ,
+ }
+
+ State m_State;
+
+ private void Awake()
+ {
+ m_Coord = GetComponent<TestFakeHeight>();
+ m_SpriteRenderer = GetComponent<SpriteRenderer>();
+ }
+
+ public void Set(Vector3 position, Vector3 dir, float speed, int index)
+ {
+ m_Coord = GetComponent<TestFakeHeight>();
+ m_SpriteRenderer = GetComponent<SpriteRenderer>();
+
+ m_Coord.x = position.x;
+ m_Coord.y = position.y;
+ m_Coord.height = position.z;
+
+ m_Velocity = dir * speed;
+
+ m_SpriteRenderer.sprite = m_Pieces[index % m_Pieces.Count];
+
+ m_State = State.Avlie;
+ }
+
+ private void Update()
+ {
+ if(m_State == State.Avlie)
+ {
+ m_Velocity += m_Gravity * Time.deltaTime;
+
+ m_Coord.x += m_Velocity.x * Time.deltaTime;
+ m_Coord.y += m_Velocity.y * Time.deltaTime;
+ m_Coord.height += m_Velocity.z * Time.deltaTime;
+
+ if (m_Coord.height < 0)
+ {
+ m_Coord.height = 0;
+
+ // bounce
+ m_Velocity.x = m_Velocity.x * m_Damp;
+ m_Velocity.y = m_Velocity.y * m_Damp;
+ m_Velocity.z = -m_Velocity.z * m_Damp;
+
+ if (m_Velocity.magnitude < 0.1f)
+ {
+ m_State = State.Dead;
+ StartCoroutine(coDead(Random.Range(1f, 3f)));
+ }
+ }
+ }
+ else if(m_State == State.Dead)
+ {
+ }
+ }
+
+ IEnumerator coDead( float time)
+ {
+ Color c = m_SpriteRenderer.color;
+
+ float t = 0;
+ while (true)
+ {
+ t += Time.deltaTime;
+
+ c.a = (time - t) / time;
+
+ m_SpriteRenderer.color = c;
+
+ if(t > time)
+ {
+ break;
+ }
+
+ yield return null;
+ }
+
+ this.gameObject.SetActive(false);
+ Destroy(this.gameObject);
+
+ yield break;
+ }
+
+}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs.meta
new file mode 100644
index 0000000..73da026
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestBrokenPiece.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c7182d8bf5ade5c47a2a98ae355119f3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Test/Scripts/TestBucket.cs b/AlienSurvival/Assets/Test/Scripts/TestBucket.cs
new file mode 100644
index 0000000..010df5e
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestBucket.cs
@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestBucket : MonoBehaviour
+{
+ [SerializeField] private TestBrokenPiece m_Piece;
+
+ private TestFakeHeight m_Coord;
+
+ private void Awake()
+ {
+ m_Coord = GetComponent<TestFakeHeight>();
+ }
+
+ public void Broken()
+ {
+ for(int i = 0; i < 10; ++i)
+ {
+ TestBrokenPiece piece = Instantiate<TestBrokenPiece>(m_Piece);
+ piece.Set(m_Coord.position + new Vector3(0,0,1f),
+ new Vector3(Random.Range(-1f,1f), Random.Range(-1f, 1f), Random.Range(0.5f, 2f)).normalized, Random.Range(1f, 3f)
+ , i);
+ }
+
+ this.gameObject.SetActive(false);
+ Destroy(this.gameObject);
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestBucket.cs.meta b/AlienSurvival/Assets/Test/Scripts/TestBucket.cs.meta
new file mode 100644
index 0000000..3d9e92b
--- /dev/null
+++ b/AlienSurvival/Assets/Test/Scripts/TestBucket.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b3861aac24d796348936aa3f51d27a97
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs
index e2ca833..239d8ed 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestMathHelper.cs
@@ -13,4 +13,31 @@ public class TestMathHelper : MonoBehaviour
);
}
+ /// <summary>
+ /// ·µ»Ø½Ç¶È
+ /// </summary>
+ /// <param name="vector2"></param>
+ /// <returns></returns>
+ public static float Angle(Vector2 vector2)
+ {
+ return 360 - (Mathf.Atan2(vector2.y, vector2.x) * Mathf.Rad2Deg * Mathf.Sign(vector2.y));
+ }
+
+ public static int Check(bool condition)
+ {
+ return condition ? 1 : 0;
+ }
+
+ //public static float Angle(Vector2 vector2)
+ //{
+ // if (vector2.x < 0)
+ // {
+ // return 360 - (Mathf.Atan2(vector2.x, vector2.y) * Mathf.Rad2Deg * -1);
+ // }
+ // else
+ // {
+ // return Mathf.Atan2(vector2.x, vector2.y) * Mathf.Rad2Deg;
+ // }
+ //}
+
} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
index 2ec06e0..b1534f3 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMaker.cs
@@ -224,14 +224,6 @@ public class TestPeaceMaker : MonoBehaviour
return true;
}
- Vector3 GetRandomDirection()
- {
- 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;
- }
-
IEnumerator coFire(float interval)
{
while (true)
@@ -256,17 +248,30 @@ public class TestPeaceMaker : MonoBehaviour
return bullet;
}
+
+ Vector3 GetRandomLaunchGrenadeDirection()
+ {
+ 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, 1f)).normalized;
+ return dir.normalized;
+ }
+
IEnumerator coLaunchGrenade(float interval)
{
while (true)
{
+ // grenade
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.Set(position, GetRandomLaunchGrenadeDirection(), Random.Range(8f, 10f));
grenade.gameObject.SetActive(true);
+ // vfx
+ GameObject eff = Instantiate<GameObject>(m_LaunchVfx, this.transform);
+ eff.transform.position = m_LaunchVfx.transform.position;
+ eff.SetActive(true);
+
yield return new WaitForSeconds(interval);
}
}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerBullet.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerBullet.cs
index bab2472..8229753 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerBullet.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerBullet.cs
@@ -36,4 +36,16 @@ public class TestPeaceMakerBullet : MonoBehaviour
transform.position = pos;
}
+
+ private void OnTriggerEnter2D(Collider2D collision)
+ {
+ TestBucket bucket = collision.gameObject.GetComponent<TestBucket>();
+
+ if (bucket)
+ {
+ bucket.Broken();
+ }
+
+ }
+
}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
index dafd7e0..665c406 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestWaspRobot.cs
@@ -63,34 +63,6 @@ public class TestWaspRobot : MonoBehaviour
void Update()
{
- //float distance = (m_Follow.positionOnGround - m_Coords.positionOnGround).magnitude;
- //m_Following = distance > m_Radius + 0.1f;
-
- //if (m_Following)
- //{
- // Vector2 dir = (m_Follow.positionOnGround - m_Coords.positionOnGround).normalized;
-
- // Vector2 posOnGround = m_Coords.positionOnGround;
- // posOnGround.x += m_MoveSpeed * Time.deltaTime * dir.x;
- // posOnGround.y += m_MoveSpeed * Time.deltaTime * dir.y;
-
- // m_Coords.positionOnGround = posOnGround;
-
- // //m_SpriteRenderer.flipX = m_Follow.x < m_Coords.x;
- //}
- //else
- //{
- // m_Angle += Time.deltaTime * m_OrbitSpeed;
-
- // Vector2 centre = m_Follow.positionOnGround;
- // centre += new Vector2(Mathf.Cos(m_Angle), Mathf.Sin(m_Angle)).normalized * m_Radius;
- // m_Coords.positionOnGround = centre;
-
- // int index = ((int)Mathf.Floor(((m_Angle * Mathf.Rad2Deg) % 360) / 30)) % 12;
- // m_SpriteRenderer.sprite = m_Sprites[index];
- // m_Shadow.sprite = m_Sprites[index];
- //}
-
float distance = (m_Follow.positionOnGround - m_Coords.positionOnGround).magnitude;
m_Following = distance > m_Radius + 0.1f;
@@ -121,6 +93,9 @@ public class TestWaspRobot : MonoBehaviour
m_Coords.positionOnGround = posOnGround;
float rad = GetAngleToTarget();
+
+ Debug.Log(rad * Mathf.Rad2Deg);
+
int index = GetSpriteIndex(rad);
SetSprite(index);
}
@@ -155,7 +130,7 @@ public class TestWaspRobot : MonoBehaviour
Vector2 dir = (posOnGround - target).normalized;
- return Mathf.Atan2(dir.y, dir.x);
+ return Mathf.Atan2(dir.y, dir.x) + 2 * Mathf.PI * TestMathHelper.Check(dir.y < 0);
}
// angle rad