diff options
author | chai <215380520@qq.com> | 2023-05-09 10:17:45 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-09 10:17:45 +0800 |
commit | c35533e31efe30121a7c61a725fdaaba47714296 (patch) | |
tree | b25bc22f00911f376c741b89b0591d2d48565e79 /marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | |
parent | d2a574ba76c56c340d8ac0ad841344664bc2cc59 (diff) |
*misc
Diffstat (limited to 'marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs')
-rw-r--r-- | marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs b/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs index d33b494..cabed35 100644 --- a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs +++ b/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs @@ -29,6 +29,8 @@ public class SpiritScript : UnitBase base.Awake(); collider = GetComponent<FastCircleCollider>(); m_SpriteRenderer = GetComponent<SpriteRenderer>(); + speed = 2; + TestSpirits.spirits.Add(this); } protected override void Update() @@ -36,7 +38,7 @@ public class SpiritScript : UnitBase base.Update(); } - private void FixedUpdate() + public void Tick() { UnitBase hero = UnitManager.hero; Vector2 pos = transform.position; @@ -48,7 +50,9 @@ public class SpiritScript : UnitBase collisions.Clear(); bool bCollide = false; - if (m_CollisionCheckerCount == 0 && TestQuadtree.quadtree.Retrieve(ref collisions, collider)) + // 这个优化可能会导致穿透 + //if (m_CollisionCheckerCount == 0 && PhysicsManager.Instance.RetriveColliders(ref collisions, collider)) + if (/*m_CollisionCheckerCount == 0 &&*/ PhysicsManager.Instance.RetriveColliders(ref collisions, collider)) { count = collisions.Count; sAvg = (sCount * sAvg + count) / (float)(sCount + 1); @@ -67,8 +71,8 @@ public class SpiritScript : UnitBase movable = false; Vector2 distance = collider.center - col.center; seperate = distance.normalized * (col.radius + collider.radius - distance.magnitude); // - dist += seperate; dist -= (distance.normalized * dist) * distance.normalized; // 去除这个方向的位移 + dist += seperate; } } if (!movable) @@ -84,10 +88,14 @@ public class SpiritScript : UnitBase m_CollisionCheckerCount++; m_CollisionCheckerCount %= 10; } - dist = dist.normalized * Time.deltaTime * speed; // 保持原速 + // dist = dist.normalized * Time.deltaTime * speed; // 保持原速 transform.position += dist.ToVector3(); } + private void FixedUpdate() + { + } + public void Die() { Item_Coin coin = Instantiate(coinPrefab) as Item_Coin; |