From b5aeebf4835ba0d7335113dd3f320a4af5b6d148 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 8 May 2023 02:29:25 +0800 Subject: * quadtree --- .../Assets/Scripts/Unit/Enemies/SpiritScript.cs | 45 ++++++++++++++++------ 1 file changed, 33 insertions(+), 12 deletions(-) (limited to 'marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs') 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().flipX = dir.x < 0; - - // //transform.position = pos; - //} + public int count = 0; + + private FastCircleCollider collider; + + private static List collisions = new List(); + + protected override void Awake() + { + base.Awake(); + collider = GetComponent(); + } + + 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().flipX = dir.x < 0; + + collisions.Clear(); + if (TestQuadtree.quadtree.Retrieve(ref collisions, collider)) + { + count = collisions.Count; + } + else + { + transform.position = pos; + } + } public void Die() { -- cgit v1.1-26-g67d0