summaryrefslogtreecommitdiff
path: root/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-08 02:29:25 +0800
committerchai <215380520@qq.com>2023-05-08 02:29:25 +0800
commitb5aeebf4835ba0d7335113dd3f320a4af5b6d148 (patch)
tree8bd28d8c7f08de90718b1aab12bc64de9d4f40f1 /marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs
parent373acc2d0761e178c5c35d36006c28d57c8a1739 (diff)
* quadtree
Diffstat (limited to 'marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs')
-rw-r--r--marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs45
1 files changed, 33 insertions, 12 deletions
diff --git a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs b/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs
index 388bfef..3df5e4b 100644
--- a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs
+++ b/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs
@@ -1,3 +1,4 @@
+using mh;
using MH;
using System.Collections;
using System.Collections.Generic;
@@ -9,18 +10,38 @@ public class SpiritScript : UnitBase
public Item_Coin coinPrefab;
- //protected override void Update()
- //{
- // base.Update();
- // //UnitBase hero = UnitManager.hero;
- // //Vector2 pos = transform.position;
- // //Vector2 heroPos = hero.transform.position;
- // //Vector2 dir = (heroPos - pos).normalized;
- // //pos += dir * Time.deltaTime * speed;
- // //this.GetComponent<SpriteRenderer>().flipX = dir.x < 0;
-
- // //transform.position = pos;
- //}
+ public int count = 0;
+
+ private FastCircleCollider collider;
+
+ private static List<IQuadTreeObject> collisions = new List<IQuadTreeObject>();
+
+ protected override void Awake()
+ {
+ base.Awake();
+ collider = GetComponent<FastCircleCollider>();
+ }
+
+ protected override void Update()
+ {
+ base.Update();
+ UnitBase hero = UnitManager.hero;
+ Vector2 pos = transform.position;
+ Vector2 heroPos = hero.transform.position;
+ Vector2 dir = (heroPos - pos).normalized;
+ pos += dir * Time.deltaTime * speed;
+ this.GetComponent<SpriteRenderer>().flipX = dir.x < 0;
+
+ collisions.Clear();
+ if (TestQuadtree.quadtree.Retrieve(ref collisions, collider))
+ {
+ count = collisions.Count;
+ }
+ else
+ {
+ transform.position = pos;
+ }
+ }
public void Die()
{