diff options
author | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
commit | 2fc9585797067730f28b03b0727bf05f9deed091 (patch) | |
tree | 8807e37b85ba922045eaa17ac445dd0a1d2d730c /marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | |
parent | 2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (diff) |
+ worldline keepers
Diffstat (limited to 'marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs')
-rw-r--r-- | marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs b/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs deleted file mode 100644 index 7ebae9c..0000000 --- a/marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs +++ /dev/null @@ -1,113 +0,0 @@ -using mh; -using MH; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class SpiritScript : UnitBase -{ - public float speed = 10f; - - public Item_Coin coinPrefab; - - public int count = 0; - public float avg = 0; - - private FastCircleCollider collider; - - private static List<IQuadTreeObject> collisions = new List<IQuadTreeObject>(); - - private SpriteRenderer m_SpriteRenderer; - - private int m_CollisionCheckerCount = 0; - - private static int sCount = 0; - private static float sAvg = 0; - - protected override void Awake() - { - base.Awake(); - collider = GetComponent<FastCircleCollider>(); - m_SpriteRenderer = GetComponent<SpriteRenderer>(); - speed = 2; - TestSpirits.spirits.Add(this); - } - - protected override void Update() - { - base.Update(); - } - - public void Tick() - { - UnitBase hero = UnitManager.hero; - Vector2 pos = transform.position; - Vector2 heroPos = hero.transform.position; - Vector2 dir = (heroPos - pos).normalized; - Vector2 dist = dir * Time.deltaTime * speed; // 位移 - m_SpriteRenderer.flipX = dir.x < 0; - - collisions.Clear(); - - bool bCollide = false; - // 这个优化可能会导致穿透 - //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); - avg = sAvg; - sCount++; - bool movable = true; - Vector2 seperate = new Vector2(); - for (int i = 0; i < collisions.Count; ++i) - { - FastCircleCollider col = collisions[i] as FastCircleCollider; - if (col == collider) - continue; - if (PhysicsManager.CircleVsCircle(col.center, col.radius, collider.center, collider.radius)) - { - bCollide = true; - movable = false; - Vector2 distance = collider.center - col.center; - seperate = distance.normalized * (col.radius + collider.radius - distance.magnitude); // - dist -= (distance.normalized * dist) * distance.normalized; // 去除这个方向的位移 - dist += seperate; - } - } - if (!movable) - { - } - } - if (bCollide) - { - m_CollisionCheckerCount = 0; - } - else - { - m_CollisionCheckerCount++; - m_CollisionCheckerCount %= 10; - } - // dist = dist.normalized * Time.deltaTime * speed; // 保持原速 - transform.position += dist.ToVector3(); - } - - private void FixedUpdate() - { - } - - public void OnDestroy() - { - TestSpirits.spirits.Remove(this); - } - - public void Die() - { - Item_Coin coin = Instantiate(coinPrefab) as Item_Coin; - coin.transform.position = this.transform.position; - - this.gameObject.SetActive(false); - Destroy(this.gameObject); - } - -} |