diff options
Diffstat (limited to 'Erika/Assets/Scripts/Unit/Components')
13 files changed, 260 insertions, 0 deletions
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox.meta new file mode 100644 index 00000000..cb559192 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94c3114d0e6b9b14593ad0046cb13968 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs new file mode 100644 index 00000000..cd0b9d86 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs @@ -0,0 +1,11 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitGuardBox : UnitPhysicsBox
+{
+ public override EPhysicsBoxType boxType => EPhysicsBoxType.GuardBox;
+
+
+
+}
\ No newline at end of file diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs.meta new file mode 100644 index 00000000..8a3ceedb --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30fe6b7d0ab0bb34d82df5ca0b188690 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs new file mode 100644 index 00000000..83902aa1 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs @@ -0,0 +1,18 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitHookBox : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs.meta new file mode 100644 index 00000000..1cf3415d --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f67c5f58d0c9b17459fbb511b86eff0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs new file mode 100644 index 00000000..6db01ecf --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs @@ -0,0 +1,12 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitHurtBox : UnitPhysicsBox
+{
+
+ [SerializeField] private List<Collider> m_Colliders;
+
+ public override EPhysicsBoxType boxType { get { return EPhysicsBoxType.HurtBox; } }
+
+}
\ No newline at end of file diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs.meta new file mode 100644 index 00000000..42ec9934 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91537a55ed7187b49ac3636609b05f43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs new file mode 100644 index 00000000..f556577d --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs @@ -0,0 +1,50 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public enum EPhysicsBoxType
+{
+ None = 0,
+ HurtBox,
+ GuardBox,
+ TriggerBox,
+}
+
+/// <summary>
+/// 角色碰撞盒基类
+/// </summary>
+public abstract class UnitPhysicsBox : MonoBehaviour
+{
+
+ // 是否启用
+ public bool isEnabled
+ {
+ get
+ {
+ return m_IsEnabled;
+ }
+ set
+ {
+ m_IsEnabled = value;
+ }
+ }
+
+ protected bool m_IsEnabled;
+
+ // 在PhysicsBoxCollection中的ID编号
+ public int ID { get { return m_ID; } }
+
+ [SerializeField] protected int m_ID;
+
+ public abstract EPhysicsBoxType boxType { get; }
+
+ // 唯一名称:类型_ID
+ public string uName
+ {
+ get
+ {
+ return boxType.ToString() + "_" + m_ID;
+ }
+ }
+
+}
diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs.meta new file mode 100644 index 00000000..41ced4de --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a583d9b8ba2494c45b118606b3ede199 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs new file mode 100644 index 00000000..68e43b63 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs @@ -0,0 +1,10 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitTriggerBox : UnitPhysicsBox
+{
+
+ public override EPhysicsBoxType boxType => EPhysicsBoxType.TriggerBox;
+
+}
\ No newline at end of file diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs.meta new file mode 100644 index 00000000..0348b3e0 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 90b190d4f8602cf44a8c24c7e48de315 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs new file mode 100644 index 00000000..ef4676a4 --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs @@ -0,0 +1,85 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UnitPhysicsBoxCollection : UnitComponent
+{
+ // 列表里不一定按顺序存储
+
+ [SerializeField] private List<UnitHurtBox> m_HurtBoxes;
+ [SerializeField] private List<UnitGuardBox> m_GuardBoxes;
+ [SerializeField] private List<UnitTriggerBox> m_TriggerBoxes;
+
+ private IEnumerable AllPhysicsBoxes()
+ {
+ yield return m_HurtBoxes;
+ yield return m_GuardBoxes;
+ yield return m_TriggerBoxes;
+ }
+
+ private IEnumerable GetBoxListByType(EPhysicsBoxType type)
+ {
+ switch (type)
+ {
+ case EPhysicsBoxType.None:
+ return null;
+ case EPhysicsBoxType.HurtBox:
+ return m_HurtBoxes;
+ case EPhysicsBoxType.GuardBox:
+ return m_GuardBoxes;
+ case EPhysicsBoxType.TriggerBox:
+ return m_TriggerBoxes;
+ default:
+ break;
+ }
+ return null;
+ }
+
+ public UnitPhysicsBox GetBoxByUName(string uName)
+ {
+ foreach(var it in AllPhysicsBoxes())
+ {
+ var box = it as UnitPhysicsBox;
+ if (box == null)
+ continue;
+
+ if (box.uName == uName)
+ return box;
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 根据类型+ID返回对应的physics box
+ /// </summary>
+ /// <param name="type"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public UnitPhysicsBox GetBoxByTypeAndID(EPhysicsBoxType type, int id)
+ {
+ IEnumerable list = GetBoxListByType(type);
+ if (list == null)
+ return null;
+
+ foreach(var it in list)
+ {
+ var box = it as UnitPhysicsBox;
+ if (box == null)
+ continue;
+ if (box.ID == id)
+ return box;
+ }
+
+ return null;
+ }
+
+ #region 碰撞回调
+
+ public void OnCollisionHappends(EPhysicsBoxType type, int id)
+ {
+
+ }
+
+ #endregion
+
+}
\ No newline at end of file diff --git a/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs.meta b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs.meta new file mode 100644 index 00000000..d4e8e32c --- /dev/null +++ b/Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51d91d81079585e4da846762765c152e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |