summaryrefslogtreecommitdiff
path: root/marching/Assets/Scripts
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-09 18:52:28 +0800
committerchai <215380520@qq.com>2023-05-09 18:52:28 +0800
commit4afa7c36ba9ec33ed113dcfb7cd33bd630d444f2 (patch)
treead7260d6a1e84cd1ab56493294301df34d6bb5a6 /marching/Assets/Scripts
parentf986dc197b5e093575bc0b56ee0ded991c228639 (diff)
*misc
Diffstat (limited to 'marching/Assets/Scripts')
-rw-r--r--marching/Assets/Scripts/Affects.meta8
-rw-r--r--marching/Assets/Scripts/Affects/AffectBase.cs10
-rw-r--r--marching/Assets/Scripts/Affects/AffectBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Buffs.meta8
-rw-r--r--marching/Assets/Scripts/Buffs/BuffBase.cs28
-rw-r--r--marching/Assets/Scripts/Buffs/BuffBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Effects.meta8
-rw-r--r--marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs39
-rw-r--r--marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs.meta11
-rw-r--r--marching/Assets/Scripts/Modifier.meta8
-rw-r--r--marching/Assets/Scripts/Perks.meta8
-rw-r--r--marching/Assets/Scripts/Perks/PerkBase.cs28
-rw-r--r--marching/Assets/Scripts/Perks/PerkBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Physics/FastBoxCollider.cs8
-rw-r--r--marching/Assets/Scripts/Physics/PhysicsManager.cs154
-rw-r--r--marching/Assets/Scripts/Physics/PhysicsManager_Collide.cs58
-rw-r--r--marching/Assets/Scripts/Physics/PhysicsManager_CollisionDetection.cs6
-rw-r--r--marching/Assets/Scripts/Physics/Quadtree.cs5
-rw-r--r--marching/Assets/Scripts/Physics/TestQuadtree.cs4
-rw-r--r--marching/Assets/Scripts/Physics/TestSpirits.cs24
-rw-r--r--marching/Assets/Scripts/Properties.meta8
-rw-r--r--marching/Assets/Scripts/Properties/PropertyBase.cs11
-rw-r--r--marching/Assets/Scripts/Properties/PropertyBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/Props.meta8
-rw-r--r--marching/Assets/Scripts/Props/PropBase.cs28
-rw-r--r--marching/Assets/Scripts/Props/PropBase.cs.meta11
-rw-r--r--marching/Assets/Scripts/UI.meta8
-rw-r--r--marching/Assets/Scripts/UI/HUD.meta8
-rw-r--r--marching/Assets/Scripts/UI/HUD/HealthBar.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Commander.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Cowboy.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Cyborg.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/KingArthur.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Master.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Mechanic.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Ronin.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Ryoma.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Sifu.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Type2.meta8
-rw-r--r--marching/Assets/Scripts/UI/Operators/Wizard.meta8
-rw-r--r--marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs18
42 files changed, 596 insertions, 67 deletions
diff --git a/marching/Assets/Scripts/Affects.meta b/marching/Assets/Scripts/Affects.meta
new file mode 100644
index 0000000..29bdb1f
--- /dev/null
+++ b/marching/Assets/Scripts/Affects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d99d7a9649a0e3243a9d36cd0621eab1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Affects/AffectBase.cs b/marching/Assets/Scripts/Affects/AffectBase.cs
new file mode 100644
index 0000000..5180304
--- /dev/null
+++ b/marching/Assets/Scripts/Affects/AffectBase.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class AffectBases
+{
+
+
+
+} \ No newline at end of file
diff --git a/marching/Assets/Scripts/Affects/AffectBase.cs.meta b/marching/Assets/Scripts/Affects/AffectBase.cs.meta
new file mode 100644
index 0000000..1b2a4a7
--- /dev/null
+++ b/marching/Assets/Scripts/Affects/AffectBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 05189e41f11956d45a41655cb86f2fc7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Buffs.meta b/marching/Assets/Scripts/Buffs.meta
new file mode 100644
index 0000000..69bca8e
--- /dev/null
+++ b/marching/Assets/Scripts/Buffs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4580776bfe5403949b3aaf98b1a673d8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Buffs/BuffBase.cs b/marching/Assets/Scripts/Buffs/BuffBase.cs
new file mode 100644
index 0000000..017d23f
--- /dev/null
+++ b/marching/Assets/Scripts/Buffs/BuffBase.cs
@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BuffBase : MonoBehaviour
+{
+ #region 序列化
+
+ #endregion
+
+ #region 公共字段
+
+ #endregion
+
+ #region 私有字段
+
+ #endregion
+
+ private void Awake()
+ {
+ // 私有字段赋值
+
+ // 公共字段赋值
+
+ // 初始化
+ }
+
+}
diff --git a/marching/Assets/Scripts/Buffs/BuffBase.cs.meta b/marching/Assets/Scripts/Buffs/BuffBase.cs.meta
new file mode 100644
index 0000000..2028306
--- /dev/null
+++ b/marching/Assets/Scripts/Buffs/BuffBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f69d7d622acac0647a5981d9420a42d9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Effects.meta b/marching/Assets/Scripts/Effects.meta
new file mode 100644
index 0000000..d9d583c
--- /dev/null
+++ b/marching/Assets/Scripts/Effects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 47a5a6e09c8fc7041a7e79731b984bc2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs b/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs
new file mode 100644
index 0000000..727f02b
--- /dev/null
+++ b/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs
@@ -0,0 +1,39 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FadeoutAndDestroy : MonoBehaviour
+{
+ #region 序列化
+ public float m_LifeTime;
+ #endregion
+
+ #region 公共字段
+
+ #endregion
+
+ #region 私有字段
+ private float time = 0;
+ private SpriteRenderer m_SpriteRenderer;
+ #endregion
+
+ private void Awake()
+ {
+ m_SpriteRenderer = GetComponent<SpriteRenderer>();
+
+ }
+
+ public void Update()
+ {
+ time += Time.deltaTime;
+ if(time > m_LifeTime)
+ {
+ Destroy(gameObject);
+ }
+
+ Color c = m_SpriteRenderer.color;
+ c.a = 1 - time / m_LifeTime;
+ m_SpriteRenderer.color = c;
+ }
+
+}
diff --git a/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs.meta b/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs.meta
new file mode 100644
index 0000000..cd07093
--- /dev/null
+++ b/marching/Assets/Scripts/Effects/FadeoutAndDestroy.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 985f0a4ee3cc7b745b4f2a49e7c76691
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Modifier.meta b/marching/Assets/Scripts/Modifier.meta
new file mode 100644
index 0000000..c1fbb44
--- /dev/null
+++ b/marching/Assets/Scripts/Modifier.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa35e70f974403f4e92aaed6c8b6171b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Perks.meta b/marching/Assets/Scripts/Perks.meta
new file mode 100644
index 0000000..a4e7dd3
--- /dev/null
+++ b/marching/Assets/Scripts/Perks.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 36d94755fd8ae90469d7d48a4f743987
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Perks/PerkBase.cs b/marching/Assets/Scripts/Perks/PerkBase.cs
new file mode 100644
index 0000000..b5cb22b
--- /dev/null
+++ b/marching/Assets/Scripts/Perks/PerkBase.cs
@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PerkBase : MonoBehaviour
+{
+ #region 序列化
+
+ #endregion
+
+ #region 公共字段
+
+ #endregion
+
+ #region 私有字段
+
+ #endregion
+
+ private void Awake()
+ {
+ // 私有字段赋值
+
+ // 公共字段赋值
+
+ // 初始化
+ }
+
+}
diff --git a/marching/Assets/Scripts/Perks/PerkBase.cs.meta b/marching/Assets/Scripts/Perks/PerkBase.cs.meta
new file mode 100644
index 0000000..a1402e2
--- /dev/null
+++ b/marching/Assets/Scripts/Perks/PerkBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 79b8e3a61f167c244a239a6efcca7cdc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Physics/FastBoxCollider.cs b/marching/Assets/Scripts/Physics/FastBoxCollider.cs
index 03fbb24..df84e0d 100644
--- a/marching/Assets/Scripts/Physics/FastBoxCollider.cs
+++ b/marching/Assets/Scripts/Physics/FastBoxCollider.cs
@@ -76,7 +76,15 @@ public class FastBoxCollider : MonoBehaviour, IQuadTreeObject
private void OnDrawGizmos()
{
+ Color c = Gizmos.color;
+
+ if(m_Type == ColliderType.Hurtbox)
+ {
+ Gizmos.color = Color.red;
+ }
Gizmos.DrawWireCube(transform.position + m_Offset.ToVector3(), m_Size.ToVector3());
+
+ Gizmos.color = c;
}
} \ No newline at end of file
diff --git a/marching/Assets/Scripts/Physics/PhysicsManager.cs b/marching/Assets/Scripts/Physics/PhysicsManager.cs
index c4e6017..bfb1dfe 100644
--- a/marching/Assets/Scripts/Physics/PhysicsManager.cs
+++ b/marching/Assets/Scripts/Physics/PhysicsManager.cs
@@ -11,116 +11,151 @@ public enum ColliderType
Hitbox,
}
+class PhysicsQuadtree
+{
+ public Vector4 quadtreeRange { set { m_QuadtreeRange = value; } }
+ private Vector4 m_QuadtreeRange;
+ private Quadtree m_Quadtree;
+ private List<IQuadTreeObject> m_Objects = new List<IQuadTreeObject>();
+
+ public PhysicsQuadtree(Vector4 range)
+ {
+ m_QuadtreeRange = range;
+ m_Quadtree = new Quadtree(0, range);
+ }
+
+ public void AddObject(IQuadTreeObject obj)
+ {
+ m_Objects.Add(obj);
+ }
+
+ public void RemoveObject(IQuadTreeObject obj)
+ {
+ m_Objects.Remove(obj);
+ }
+
+ public void UpdateQuadtree()
+ {
+ m_Quadtree.Clear(false);
+ m_Quadtree.Rebound(m_QuadtreeRange);
+ for (int i = 0; i < m_Objects.Count; i++)
+ {
+ IQuadTreeObject obj = m_Objects[i];
+ m_Quadtree.Insert(obj);
+ }
+ }
+
+ public void Debug()
+ {
+ Color c = Gizmos.color;
+ Gizmos.color = Color.red;
+ m_Quadtree?.Iterate((t) =>
+ {
+ Vector3 pos = new Vector3(t.x, t.y, 0);
+ Vector3 size = new Vector3(t.w, t.h, 1);
+ Gizmos.DrawWireCube(pos, size);
+ });
+ Gizmos.color = c;
+ }
+
+ public bool Retrive(ref List<IQuadTreeObject> returnObjs, IQuadTreeObject obj)
+ {
+ return m_Quadtree.Retrieve(ref returnObjs, obj);
+ }
+
+ public bool Retrive(ref List<IQuadTreeObject> returnObjs, Vector4 bound)
+ {
+ return m_Quadtree.Retrieve(ref returnObjs, bound);
+ }
+
+}
+
/// <summary>
/// IJռ仮֣Żײ
/// </summary>
public partial class PhysicsManager : Singleton<PhysicsManager>
{
#region Quadtrees
- public Vector4 quadtreeCollisionRange { set { m_QuadtreeCollisionRange = value; } }
- private Vector4 m_QuadtreeCollisionRange;
- private Quadtree m_QuadtreeCollision;
- private List<IQuadTreeObject> m_QuadtreeObjColliders = new List<IQuadTreeObject>();
-
- public Vector4 quadtreeHurtboxRange { set { m_QuadtreeHurtboxRange = value; } }
- private Vector4 m_QuadtreeHurtboxRange;
- private Quadtree m_QuadtreeHurtboxes;
- private List<IQuadTreeObject> m_QuadtreeObjHurtboxes = new List<IQuadTreeObject>();
- #endregion
+ private PhysicsQuadtree m_CollisionQuadtree;
+ private PhysicsQuadtree m_HurtboxQuadtree;
+ #endregion
+
+ public Vector4 collisionQuadtreeRange
+ {
+ set
+ {
+ m_CollisionQuadtree.quadtreeRange = value;
+ }
+ }
+
+ public Vector4 hurtboxQuadtreeRange
+ {
+ set
+ {
+ m_HurtboxQuadtree.quadtreeRange = value;
+ }
+ }
+
public List<IQuadTreeObject> sharedRetriveResults => m_SharedRetriveResults;
private List<IQuadTreeObject> m_SharedRetriveResults = new List<IQuadTreeObject>();
public PhysicsManager()
{
- m_QuadtreeCollision = new Quadtree(0, new Vector4(0, 0, 30, 30));
- m_QuadtreeHurtboxes= new Quadtree(0, new Vector4(0,0, 30, 30));
+ m_CollisionQuadtree = new PhysicsQuadtree(new Vector4(0, 0, 30, 30));
+ m_HurtboxQuadtree = new PhysicsQuadtree(new Vector4(0, 0, 30, 30));
}
public void AddCollider(IQuadTreeObject collider)
{
- m_QuadtreeObjColliders.Add(collider);
+ m_CollisionQuadtree.AddObject(collider);
}
public void RemoveCollider(IQuadTreeObject collider)
{
- m_QuadtreeObjColliders.Remove(collider);
+ m_CollisionQuadtree.RemoveObject(collider);
}
public void AddHurtboxes(IQuadTreeObject hurtbox)
{
- m_QuadtreeObjHurtboxes.Add(hurtbox);
+ m_HurtboxQuadtree.AddObject(hurtbox);
}
public void RemoveHurtbox(IQuadTreeObject hurtbox)
{
- m_QuadtreeObjHurtboxes.Remove(hurtbox);
- }
-
- public void UpdateQuadtreeCollision()
- {
- m_QuadtreeCollision.Clear(false);
- m_QuadtreeCollision.Rebound(m_QuadtreeCollisionRange);
- for (int i = 0; i < m_QuadtreeObjColliders.Count; i++)
- {
- IQuadTreeObject obj = m_QuadtreeObjColliders[i];
- m_QuadtreeCollision.Insert(obj);
- }
- }
-
- public void UpdateQuadtreeHurtbox()
- {
- m_QuadtreeHurtboxes.Clear(false);
- m_QuadtreeHurtboxes.Rebound(m_QuadtreeHurtboxRange);
- for (int i = 0; i < m_QuadtreeObjHurtboxes.Count; i++)
- {
- IQuadTreeObject obj = m_QuadtreeObjHurtboxes[i];
- m_QuadtreeHurtboxes.Insert(obj);
- }
+ m_HurtboxQuadtree.RemoveObject(hurtbox);
}
public void Update()
{
- UpdateQuadtreeCollision();
- UpdateQuadtreeHurtbox();
- }
-
- public void Debug()
- {
- Color c = Gizmos.color;
- Gizmos.color = Color.red;
- m_QuadtreeCollision?.Iterate((t) => {
- Vector3 pos = new Vector3(t.x, t.y, 0);
- Vector3 size = new Vector3(t.w, t.h, 1);
- Gizmos.DrawWireCube(pos, size);
- });
- Gizmos.color = c;
+ m_CollisionQuadtree.UpdateQuadtree();
+ m_HurtboxQuadtree.UpdateQuadtree();
}
public bool RetriveColliders(ref List<IQuadTreeObject> returnObjs, IQuadTreeObject obj)
{
- return m_QuadtreeCollision.Retrieve(ref returnObjs, obj);
+ return m_CollisionQuadtree.Retrive(ref returnObjs, obj);
}
public bool RetriveColliders(ref List<IQuadTreeObject> returnObjs, Vector4 bound)
{
- return m_QuadtreeCollision.Retrieve(ref returnObjs, bound);
+ return m_CollisionQuadtree.Retrive(ref returnObjs, bound);
}
public bool RetriveHurtboxes(ref List<IQuadTreeObject> returnObjs, Vector4 bound)
{
- return m_QuadtreeHurtboxes.Retrieve(ref returnObjs, bound);
+ return m_HurtboxQuadtree.Retrive(ref returnObjs, bound);
}
public bool RetriveColliders(Vector4 bound)
{
m_SharedRetriveResults.Clear();
- return m_QuadtreeCollision.Retrieve(ref m_SharedRetriveResults, bound);
+ return m_CollisionQuadtree.Retrive(ref m_SharedRetriveResults, bound);
}
public bool RetriveHurtboxes(Vector4 bound)
{
m_SharedRetriveResults.Clear();
- return m_QuadtreeHurtboxes.Retrieve(ref m_SharedRetriveResults, bound);
+ return m_HurtboxQuadtree.Retrive(ref m_SharedRetriveResults, bound);
}
public System.Func<Vector4, bool> GetRetriverByType(ColliderType type)
@@ -133,4 +168,9 @@ public partial class PhysicsManager : Singleton<PhysicsManager>
return null;
}
+ public void Debug()
+ {
+ m_CollisionQuadtree.Debug();
+ }
+
} \ No newline at end of file
diff --git a/marching/Assets/Scripts/Physics/PhysicsManager_Collide.cs b/marching/Assets/Scripts/Physics/PhysicsManager_Collide.cs
index 48af516..7b4aa1c 100644
--- a/marching/Assets/Scripts/Physics/PhysicsManager_Collide.cs
+++ b/marching/Assets/Scripts/Physics/PhysicsManager_Collide.cs
@@ -19,6 +19,27 @@ public partial class PhysicsManager : Singleton<PhysicsManager>
return box;
}
+ public Vector4 GetRayBound(Vector4 line, float maxLen=20f)
+ {
+ Vector2 tr = line.xy() + maxLen * line.zw().normalized;
+ Vector4 bound = new Vector4();
+ bound.x = (tr.x + line.x) / 2;
+ bound.y = (tr.y + line.y) / 2;
+ bound.z = Mathf.Abs(tr.x - line.x);
+ bound.w = Mathf.Abs(tr.y - line.y);
+ return bound;
+ }
+
+ public Vector4 GetPointBound(Vector2 point)
+ {
+ Vector4 bound = new Vector4();
+ bound.x = point.x;
+ bound.y = point.y;
+ bound.z = 1;
+ bound.w = 1;
+ return bound;
+ }
+
public ref readonly List<IQuadTreeObject> CircleCast(ColliderType target, Vector3 circle)
{
m_SharedCollideResults.Clear();
@@ -55,10 +76,45 @@ public partial class PhysicsManager : Singleton<PhysicsManager>
public ref readonly List<IQuadTreeObject> BoxCast(ColliderType target, Vector4 box)
{
+ m_SharedCollideResults.Clear();
+ var retriver = GetRetriverByType(target);
+ if (retriver != null)
+ {
+ if (retriver(GetBoxBound(box)))
+ {
+ for (int i = 0; i < m_SharedRetriveResults.Count; ++i)
+ {
+ var collider = m_SharedRetriveResults[i];
+ if (collider != null)
+ {
+ if (collider is FastCircleCollider)
+ {
+ if (BoxVsCircle(box, (collider as FastCircleCollider).circle))
+ {
+ m_SharedCollideResults.Add(collider);
+ }
+ }
+ else if (collider is FastBoxCollider)
+ {
+ if (BoxVsBox(box, (collider as FastBoxCollider).box))
+ {
+ m_SharedCollideResults.Add(collider);
+ }
+ }
+ }
+ }
+ }
+ }
return ref m_SharedCollideResults;
}
- public ref readonly List<IQuadTreeObject> LineCast(ColliderType target, Vector4 line)
+ /// <summary>
+ /// x,y dir.x dir.y
+ /// </summary>
+ /// <param name="target"></param>
+ /// <param name="line"></param>
+ /// <returns></returns>
+ public ref readonly List<IQuadTreeObject> RayCast(ColliderType target, Vector4 ray, float maxLength = 20f)
{
return ref m_SharedCollideResults;
}
diff --git a/marching/Assets/Scripts/Physics/PhysicsManager_CollisionDetection.cs b/marching/Assets/Scripts/Physics/PhysicsManager_CollisionDetection.cs
index 81625ac..3436a34 100644
--- a/marching/Assets/Scripts/Physics/PhysicsManager_CollisionDetection.cs
+++ b/marching/Assets/Scripts/Physics/PhysicsManager_CollisionDetection.cs
@@ -46,6 +46,12 @@ public partial class PhysicsManager : Singleton<PhysicsManager>
return false;
}
+ public static bool BoxVsBox(Vector4 b1, Vector4 b2)
+ {
+ Vector2 intersection = new Vector2();
+ return BoxVsBox(b1, b2, out intersection);
+ }
+
public static bool BoxVsCircle(Vector4 box, Vector2 pos, float radius)
{
Vector4 boxScaled = box;
diff --git a/marching/Assets/Scripts/Physics/Quadtree.cs b/marching/Assets/Scripts/Physics/Quadtree.cs
index 4185f1f..f1237ab 100644
--- a/marching/Assets/Scripts/Physics/Quadtree.cs
+++ b/marching/Assets/Scripts/Physics/Quadtree.cs
@@ -8,6 +8,8 @@ using System.Runtime.InteropServices.WindowsRuntime;
using Unity.VisualScripting;
using UnityEngine;
+// https://gamedev.stackexchange.com/questions/6345/quad-tree-vs-grid-based-collision-detection
+
namespace mh
{
@@ -16,6 +18,9 @@ namespace mh
public Vector4 bound { get; }
}
+ /// <summary>
+ /// IJռָ
+ /// </summary>
public class Quadtree
{
public const int kMaxObjectsPerBlock = 5;
diff --git a/marching/Assets/Scripts/Physics/TestQuadtree.cs b/marching/Assets/Scripts/Physics/TestQuadtree.cs
index 1cbb64d..54ff5f6 100644
--- a/marching/Assets/Scripts/Physics/TestQuadtree.cs
+++ b/marching/Assets/Scripts/Physics/TestQuadtree.cs
@@ -18,8 +18,8 @@ namespace mh
private void FixedUpdate()
{
var pos = UnitManager.hero.transform.position;
- PhysicsManager.Instance.quadtreeCollisionRange = new Vector4(pos.x, pos.y, 50, 50);
- PhysicsManager.Instance.quadtreeHurtboxRange = new Vector4(pos.x, pos.y, 50, 50);
+ PhysicsManager.Instance.collisionQuadtreeRange = new Vector4(pos.x, pos.y, 50, 50);
+ PhysicsManager.Instance.hurtboxQuadtreeRange = new Vector4(pos.x, pos.y, 50, 50);
PhysicsManager.Instance.Update();
}
diff --git a/marching/Assets/Scripts/Physics/TestSpirits.cs b/marching/Assets/Scripts/Physics/TestSpirits.cs
index 347fc42..058f166 100644
--- a/marching/Assets/Scripts/Physics/TestSpirits.cs
+++ b/marching/Assets/Scripts/Physics/TestSpirits.cs
@@ -13,20 +13,36 @@ public class TestSpirits : MonoBehaviour
// Start is called before the first frame update
void Start()
{
-
- for (int i = 0; i < 300; ++i)
+ int count = 300 - spirits.Count;
+ for (int i = 0; i < count; ++i)
{
float x = UnityEngine.Random.Range(-20, 10);
float y = UnityEngine.Random.Range(-20, 10);
SpiritScript go = Instantiate(prefab) as SpiritScript;
go.transform.position = new Vector3(x, y, 0);
go.transform.parent = this.transform;
+ go.gameObject.SetActive(true);
}
+ StartCoroutine(CoSpawn(5));
}
- // Update is called once per frame
- void Update()
+ IEnumerator CoSpawn(float interval)
{
+ while (true)
+ {
+ int count = 300 - spirits.Count;
+ for (int i = 0; i < count; ++i)
+ {
+ float x = UnityEngine.Random.Range(-20, 10);
+ float y = UnityEngine.Random.Range(-20, 10);
+ SpiritScript go = Instantiate(prefab) as SpiritScript;
+ go.transform.position = new Vector3(x, y, 0);
+ go.transform.parent = this.transform;
+ go.gameObject.SetActive(true);
+ }
+
+ yield return new WaitForSeconds(interval);
+ }
}
private void FixedUpdate()
diff --git a/marching/Assets/Scripts/Properties.meta b/marching/Assets/Scripts/Properties.meta
new file mode 100644
index 0000000..9373032
--- /dev/null
+++ b/marching/Assets/Scripts/Properties.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e0e1f659d9914604f95ecf114f926cc3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Properties/PropertyBase.cs b/marching/Assets/Scripts/Properties/PropertyBase.cs
new file mode 100644
index 0000000..1bdd340
--- /dev/null
+++ b/marching/Assets/Scripts/Properties/PropertyBase.cs
@@ -0,0 +1,11 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 单个属性
+/// </summary>
+public abstract class PropertyBase
+{
+
+} \ No newline at end of file
diff --git a/marching/Assets/Scripts/Properties/PropertyBase.cs.meta b/marching/Assets/Scripts/Properties/PropertyBase.cs.meta
new file mode 100644
index 0000000..419acc5
--- /dev/null
+++ b/marching/Assets/Scripts/Properties/PropertyBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7cc8f2c879c6fd1459eb53a16286b9a2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Props.meta b/marching/Assets/Scripts/Props.meta
new file mode 100644
index 0000000..3e1a2d7
--- /dev/null
+++ b/marching/Assets/Scripts/Props.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3e47f3c86e97913409a27a4db22e00e0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Props/PropBase.cs b/marching/Assets/Scripts/Props/PropBase.cs
new file mode 100644
index 0000000..f971ed5
--- /dev/null
+++ b/marching/Assets/Scripts/Props/PropBase.cs
@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PropBase : MonoBehaviour
+{
+ #region 序列化
+
+ #endregion
+
+ #region 公共字段
+
+ #endregion
+
+ #region 私有字段
+
+ #endregion
+
+ private void Awake()
+ {
+ // 私有字段赋值
+
+ // 公共字段赋值
+
+ // 初始化
+ }
+
+}
diff --git a/marching/Assets/Scripts/Props/PropBase.cs.meta b/marching/Assets/Scripts/Props/PropBase.cs.meta
new file mode 100644
index 0000000..1c13ca9
--- /dev/null
+++ b/marching/Assets/Scripts/Props/PropBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4e7eada06d21254489ab3e9d4830e800
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI.meta b/marching/Assets/Scripts/UI.meta
new file mode 100644
index 0000000..e8c5c97
--- /dev/null
+++ b/marching/Assets/Scripts/UI.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8905b9f5013df034fa3497bcfc2b3b90
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/HUD.meta b/marching/Assets/Scripts/UI/HUD.meta
new file mode 100644
index 0000000..6718031
--- /dev/null
+++ b/marching/Assets/Scripts/UI/HUD.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9200672dd82f81947a018b2e1fb32e51
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/HUD/HealthBar.meta b/marching/Assets/Scripts/UI/HUD/HealthBar.meta
new file mode 100644
index 0000000..b5188ad
--- /dev/null
+++ b/marching/Assets/Scripts/UI/HUD/HealthBar.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 94b2ee526d964994098f0fa18c97fde0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators.meta b/marching/Assets/Scripts/UI/Operators.meta
new file mode 100644
index 0000000..04f831c
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1b42061718486264697cae9c36222d2f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Commander.meta b/marching/Assets/Scripts/UI/Operators/Commander.meta
new file mode 100644
index 0000000..9023d77
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Commander.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3cbe084a794b93142b2e7541e538c496
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Cowboy.meta b/marching/Assets/Scripts/UI/Operators/Cowboy.meta
new file mode 100644
index 0000000..f20cf83
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Cowboy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e7e9b9896e5430b49b06feb71678dd49
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Cyborg.meta b/marching/Assets/Scripts/UI/Operators/Cyborg.meta
new file mode 100644
index 0000000..b813caa
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Cyborg.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 56060244647985942ad6c6d3f7756210
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/KingArthur.meta b/marching/Assets/Scripts/UI/Operators/KingArthur.meta
new file mode 100644
index 0000000..9e43dc8
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/KingArthur.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7449f91a91e57494ba0e816e5a7e024e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Master.meta b/marching/Assets/Scripts/UI/Operators/Master.meta
new file mode 100644
index 0000000..4354f3e
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Master.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 398c4315e8ba4a14d818621cb751b0f7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Mechanic.meta b/marching/Assets/Scripts/UI/Operators/Mechanic.meta
new file mode 100644
index 0000000..c4b77cf
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Mechanic.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 16a1722ad71874946b31a35b58b057ab
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Ronin.meta b/marching/Assets/Scripts/UI/Operators/Ronin.meta
new file mode 100644
index 0000000..d7240d4
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Ronin.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7217df6ac87f3014db7ddc6dacdaf751
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Ryoma.meta b/marching/Assets/Scripts/UI/Operators/Ryoma.meta
new file mode 100644
index 0000000..8ad1a71
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Ryoma.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b78714d9dd260334c8edc619bb2a1a75
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Sifu.meta b/marching/Assets/Scripts/UI/Operators/Sifu.meta
new file mode 100644
index 0000000..8b28750
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Sifu.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f340a3f330f3a243b64f70f37a1452c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Type2.meta b/marching/Assets/Scripts/UI/Operators/Type2.meta
new file mode 100644
index 0000000..ba8e64a
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Type2.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f3f08e7594f9a73439f0d5a210ba7092
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/UI/Operators/Wizard.meta b/marching/Assets/Scripts/UI/Operators/Wizard.meta
new file mode 100644
index 0000000..c1da9fa
--- /dev/null
+++ b/marching/Assets/Scripts/UI/Operators/Wizard.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fe38ee934744cf4469eaa82d6ffe2ab6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs
index 8de5aff..2026034 100644
--- a/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs
+++ b/marching/Assets/Scripts/Unit/Characters/Samurai/SamuraiScript.cs
@@ -18,6 +18,7 @@ namespace MH
[SerializeField] private WaypointScript m_Waypoint;
[SerializeField] private float m_Speed;
[SerializeField] private BladeScript m_Blade;
+ [SerializeField] private GameObject m_GroundBreak;
private SpriteRenderer m_Sprite;
private bool m_Moving;
@@ -41,7 +42,7 @@ namespace MH
m_Sprite = GetComponent<SpriteRenderer>();
m_TimeSinceLastMove = float.MaxValue;
StartCoroutine(CoAttack(1f));
- StartCoroutine(CoStrike(3f));
+ StartCoroutine(CoStrike(1f));
}
protected override void Update()
@@ -182,14 +183,25 @@ namespace MH
private void Strike()
{
- float radius = 2;
Vector3 pos = transform.position;
+
+ float radius = 2;
+
+ var go = Instantiate(m_GroundBreak);
+ go.transform.position = pos;
+ go.gameObject.SetActive(true);
+ go.transform.localScale *= radius / 1.7f;
+
var colliders = PhysicsManager.Instance.CircleCast(ColliderType.Hurtbox, new Vector3(pos.x, pos.y, radius));
if (colliders.Count != 0)
{
for(int i = 0; i < colliders.Count; ++i)
{
- GameObject.Destroy((colliders[i] as MonoBehaviour).gameObject);
+ go = (colliders[i] as MonoBehaviour).gameObject;
+ if(go != this.gameObject)
+ {
+ GameObject.Destroy(go);
+ }
}
}
}