summaryrefslogtreecommitdiff
path: root/marching/Assets/Scripts/Unit
diff options
context:
space:
mode:
Diffstat (limited to 'marching/Assets/Scripts/Unit')
-rw-r--r--marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs8
-rw-r--r--marching/Assets/Scripts/Unit/Enemies/SpiritScript.cs16
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;