summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-12 10:32:11 +0800
committerchai <215380520@qq.com>2023-05-12 10:32:11 +0800
commit2fc9585797067730f28b03b0727bf05f9deed091 (patch)
tree8807e37b85ba922045eaa17ac445dd0a1d2d730c /WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs
parent2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (diff)
+ worldline keepers
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs b/WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs
new file mode 100644
index 0000000..5a37e4a
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Projectiles/BladeScript.cs
@@ -0,0 +1,85 @@
+using mh;
+using MH;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BladeScript : ProjectileBase
+{
+ [NonSerialized] public float life;
+
+ public Vector2 dir;
+
+ private static List<IQuadTreeObject> collisions = new List<IQuadTreeObject>();
+
+ private FastCircleCollider collider;
+
+ private SpriteRenderer sr
+ {
+ get
+ {
+ return this.gameObject.GetComponent<SpriteRenderer>();
+ }
+ }
+
+ public void Start()
+ {
+ collider = GetComponent<FastCircleCollider>();
+ Invoke("DestroySelf", life);
+ // Attack();
+ }
+
+ void DestroySelf()
+ {
+ Destroy(this.gameObject);
+ }
+
+ public void Update()
+ {
+ Color c = sr.color;
+ c.a *= 0.99f;
+ sr.color = c;
+
+ transform.localRotation *= Quaternion.Euler(0, 0, 20);
+
+ transform.position += (dir * Time.deltaTime * 10f).ToVector3();
+ }
+
+ public void SetFlip(bool flip)
+ {
+ sr.flipX = flip;
+ }
+
+ public void Attack()
+ {
+ Vector3 pos = transform.position;
+ if (PhysicsManager.Instance.RetriveHurtboxes(ref collisions, new Vector4(pos.x, pos.y, 2, 2)))
+ {
+ for (int i = 0; i < collisions.Count; i++)
+ {
+ var col = collisions[i] as MonoBehaviour;
+ if (col != null)
+ {
+ if (col is FastBoxCollider)
+ {
+ var box = col as FastBoxCollider;
+ if (box != null)
+ {
+ if (PhysicsManager.BoxVsCircle(box.box, collider.circle))
+ {
+ GameObject.Destroy(box.gameObject);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void FixedUpdate()
+ {
+ Attack();
+ }
+
+}