summaryrefslogtreecommitdiff
path: root/Erika/Assets/Scripts/Unit
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-11-09 17:54:32 +0800
committerchai <chaifix@163.com>2022-11-09 17:54:32 +0800
commitc8452a1e2f5e2147e7168e2520ca1888e9b7f6f0 (patch)
tree0ccd14ed8867ff800ccdc385a5e8330b93c00bf9 /Erika/Assets/Scripts/Unit
parent5a791f596cac6d8b25e42749416a3b084c1a0ef8 (diff)
* misc
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox.meta8
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitGuardBox.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs18
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHookBox.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs12
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitHurtBox.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs50
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitPhysicsBox.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs10
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBox/UnitTriggerBox.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs85
-rw-r--r--Erika/Assets/Scripts/Unit/Components/UnitPhysicsBoxCollection.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/Controller/UnitController.cs6
-rw-r--r--Erika/Assets/Scripts/Unit/UnitBone.cs81
-rw-r--r--Erika/Assets/Scripts/Unit/UnitBone.cs.meta11
-rw-r--r--Erika/Assets/Scripts/Unit/UnitDetail.cs80
17 files changed, 363 insertions, 75 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:
diff --git a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
index 0e7510ae..e77b8435 100644
--- a/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
+++ b/Erika/Assets/Scripts/Unit/Controller/UnitController.cs
@@ -40,6 +40,8 @@ public class UnitController : MonoBehaviour/*, Interactable*/
public UnitDetail unitDetail;
+ public UnitPhysicsBoxCollection unitPhysicsBoxes;
+
public UnitBody unitBody;
public UnitLensEffect unitLensEffect;
@@ -187,7 +189,9 @@ public class UnitController : MonoBehaviour/*, Interactable*/
unitDetail = gameObject.GetComponentInChildren<UnitDetail>();
- unitPreprocessing = GetOrAddUnitComponent<UnitPreprocessing>();
+ unitPhysicsBoxes = gameObject.GetComponentInChildren<UnitPhysicsBoxCollection>();
+
+ unitPreprocessing = GetOrAddUnitComponent<UnitPreprocessing>();
unitPreprocessing.Initialize();
}
diff --git a/Erika/Assets/Scripts/Unit/UnitBone.cs b/Erika/Assets/Scripts/Unit/UnitBone.cs
new file mode 100644
index 00000000..1ff6bbe3
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/UnitBone.cs
@@ -0,0 +1,81 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+
+/// <summary>
+/// 骨骼名
+/// </summary>
+public enum EUnitBone
+{
+ Hips = 0, // 盆骨
+ Spine, // 脊柱
+ Chest, // 胸腔
+ UpperChest, //
+ Neck,
+ Head,
+ LEye,
+ REye,
+ Jaw,
+
+ LShoulder = 20,
+ LUpperArm,
+ LLowerArm,
+ LHand,
+ LFinger00,
+ LFinger01,
+ LFinger02,
+ LFinger10,
+ LFinger11,
+ LFinger12,
+ LFinger20,
+ LFinger21,
+ LFinger22,
+ LFinger30,
+ LFinger31,
+ LFinger32,
+ LFinger40,
+ LFinger41,
+ LFinger42,
+
+ RShoulder = 40,
+ RUpperArm,
+ RLowerArm,
+ RHand,
+ RFinger00,
+ RFinger01,
+ RFinger02,
+ RFinger10,
+ RFinger11,
+ RFinger12,
+ RFinger20,
+ RFinger21,
+ RFinger22,
+ RFinger30,
+ RFinger31,
+ RFinger32,
+ RFinger40,
+ RFinger41,
+ RFinger42,
+
+ LUpperLeg = 60, // 大腿
+ LLowerLeg, // 小腿肚
+ LFoot, // 左脚
+ LToes, // 脚趾
+ //LToe0, // 脚趾0
+ //LToe1, // 脚趾1
+ //LToe2, // 脚趾2
+ //LToe3, // 脚趾3
+ //LToe4, // 脚趾4
+
+ RUpperLeg = 80, // 大腿
+ RLowerLeg, // 小腿肚
+ RFoot, // 左脚
+ RToes, // 脚趾
+ //RToe0, // 脚趾0
+ //RToe1, // 脚趾1
+ //RToe2, // 脚趾2
+ //RToe3, // 脚趾3
+ //RToe4, // 脚趾4
+
+}
diff --git a/Erika/Assets/Scripts/Unit/UnitBone.cs.meta b/Erika/Assets/Scripts/Unit/UnitBone.cs.meta
new file mode 100644
index 00000000..03d36c66
--- /dev/null
+++ b/Erika/Assets/Scripts/Unit/UnitBone.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 06ebe70b48de3cb48841b22ba0474c25
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Erika/Assets/Scripts/Unit/UnitDetail.cs b/Erika/Assets/Scripts/Unit/UnitDetail.cs
index c57b87b5..56858b0b 100644
--- a/Erika/Assets/Scripts/Unit/UnitDetail.cs
+++ b/Erika/Assets/Scripts/Unit/UnitDetail.cs
@@ -4,83 +4,12 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
-public enum EUnitBone
-{
- Hips = 0, // 盆骨
- Spine , // 脊柱
- Chest , // 胸腔
- UpperChest , //
- Neck ,
- Head ,
- LEye ,
- REye ,
- Jaw ,
-
- LShoulder = 20,
- LUpperArm,
- LLowerArm,
- LHand,
- LFinger00,
- LFinger01,
- LFinger02,
- LFinger10,
- LFinger11,
- LFinger12,
- LFinger20,
- LFinger21,
- LFinger22,
- LFinger30,
- LFinger31,
- LFinger32,
- LFinger40,
- LFinger41,
- LFinger42,
-
- RShoulder = 40,
- RUpperArm,
- RLowerArm,
- RHand,
- RFinger00,
- RFinger01,
- RFinger02,
- RFinger10,
- RFinger11,
- RFinger12,
- RFinger20,
- RFinger21,
- RFinger22,
- RFinger30,
- RFinger31,
- RFinger32,
- RFinger40,
- RFinger41,
- RFinger42,
-
- LUpperLeg = 60, // 大腿
- LLowerLeg, // 小腿肚
- LFoot, // 左脚
- LToes, // 脚趾
- //LToe0, // 脚趾0
- //LToe1, // 脚趾1
- //LToe2, // 脚趾2
- //LToe3, // 脚趾3
- //LToe4, // 脚趾4
-
- RUpperLeg = 80, // 大腿
- RLowerLeg, // 小腿肚
- RFoot, // 左脚
- RToes, // 脚趾
- //RToe0, // 脚趾0
- //RToe1, // 脚趾1
- //RToe2, // 脚趾2
- //RToe3, // 脚趾3
- //RToe4, // 脚趾4
-
-}
-
[Serializable]
public class UnitBoneDictionary : SerializableDictionary<EUnitBone, Transform> { }
+/// <summary>
+/// 角色身上的参考点
+/// </summary>
public enum EUnitReferencePoint
{
None = 0,
@@ -111,6 +40,9 @@ public enum EUnitReferencePoint
[Serializable]
public class UnitReferencePointDictionary : SerializableDictionary<EUnitReferencePoint, Transform> { }
+/// <summary>
+/// 身体部位
+/// </summary>
public enum EBodyPart
{
Body = 0, // main body