diff options
author | chai <215380520@qq.com> | 2023-05-08 02:29:25 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-08 02:29:25 +0800 |
commit | b5aeebf4835ba0d7335113dd3f320a4af5b6d148 (patch) | |
tree | 8bd28d8c7f08de90718b1aab12bc64de9d4f40f1 /marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | |
parent | 373acc2d0761e178c5c35d36006c28d57c8a1739 (diff) |
* quadtree
Diffstat (limited to 'marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs')
-rw-r--r-- | marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | 45 |
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() { |