diff options
Diffstat (limited to 'marching/Assets/Scripts/Unit')
-rw-r--r-- | marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs | 8 | ||||
-rw-r--r-- | marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs | 16 |
2 files changed, 18 insertions, 6 deletions
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs index ce321d3..262c821 100644 --- a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs +++ b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using Unity.VisualScripting; using UnityEngine; namespace MH @@ -26,6 +27,11 @@ namespace MH private bool m_Attacking = false; private bool m_IsKeepAttacking = false; + private void Awake() + { + UnitManager.hero = this; + } + void Start() { m_Camera = Camera.main; @@ -33,8 +39,6 @@ namespace MH m_Sprite = GetComponent<SpriteRenderer>(); m_TimeSinceLastMove = float.MaxValue; StartCoroutine(CoAttack(1f)); - - UnitManager.hero = this; } protected override void Update() 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; |