diff options
author | chai <chaifix@163.com> | 2022-11-09 17:54:32 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-11-09 17:54:32 +0800 |
commit | c8452a1e2f5e2147e7168e2520ca1888e9b7f6f0 (patch) | |
tree | 0ccd14ed8867ff800ccdc385a5e8330b93c00bf9 /Erika/Assets/Scripts/Unit | |
parent | 5a791f596cac6d8b25e42749416a3b084c1a0ef8 (diff) |
* misc
Diffstat (limited to 'Erika/Assets/Scripts/Unit')
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
|