From 68f3823ddb10110c2abafb5f1aab2f3e6f3fa360 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 16 Oct 2020 08:09:25 +0800 Subject: * ability system * physics system --- Assets/Art/PostProcessing_setup.asset | 2 +- Assets/Art/Sound.meta | 8 ++ Assets/Plugins/Editor.meta | 5 - Assets/Prefabs/Characters/Saionji.prefab | 19 ++- Assets/Scenes/Demo/SaionjiShowOff.unity | 142 ++++++++++++++++++--- .../AbilitySystem/Abilities/AttackAbility.cs | 2 +- .../AbilitySystem/Actions/ActionDontUseGravity.cs | 18 +++ .../Actions/ActionDontUseGravity.cs.meta | 11 ++ .../AbilitySystem/Actions/ActionUseGravity.cs | 10 ++ .../AbilitySystem/Actions/ActionUseGravity.cs.meta | 11 ++ .../AbilitySystem/Conditions/ConditionCheckHp.cs | 18 +++ .../Conditions/ConditionCheckHp.cs.meta | 11 ++ .../AbilitySystem/Conditions/ConditionCheckMp.cs | 18 +++ .../Conditions/ConditionCheckMp.cs.meta | 11 ++ Assets/Scripts/Physics/DefendBox.cs | 18 --- Assets/Scripts/Physics/DefendBox.cs.meta | 11 -- Assets/Scripts/Physics/HitBox.cs | 8 -- Assets/Scripts/Physics/HitBox.cs.meta | 11 -- Assets/Scripts/Physics/HurtBox.cs | 18 --- Assets/Scripts/Physics/HurtBox.cs.meta | 11 -- Assets/Scripts/Physics/PhysicsBox.cs | 4 +- Assets/Scripts/Physics/PhysicsHelper.cs | 46 ++++++- Assets/Scripts/Physics/PhysicsPrimitive.cs | 16 ++- Assets/Scripts/Physics/PhysicsWorld.cs | 62 +++++++-- Assets/Scripts/Test/SaionjiScript.cs | 10 -- Assets/Scripts/Test/SaionjiScript_Ability.cs | 10 ++ 26 files changed, 373 insertions(+), 138 deletions(-) create mode 100644 Assets/Art/Sound.meta delete mode 100644 Assets/Plugins/Editor.meta create mode 100644 Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs create mode 100644 Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta create mode 100644 Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs create mode 100644 Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta create mode 100644 Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs create mode 100644 Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta create mode 100644 Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs create mode 100644 Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs.meta delete mode 100644 Assets/Scripts/Physics/DefendBox.cs delete mode 100644 Assets/Scripts/Physics/DefendBox.cs.meta delete mode 100644 Assets/Scripts/Physics/HitBox.cs delete mode 100644 Assets/Scripts/Physics/HitBox.cs.meta delete mode 100644 Assets/Scripts/Physics/HurtBox.cs delete mode 100644 Assets/Scripts/Physics/HurtBox.cs.meta (limited to 'Assets') diff --git a/Assets/Art/PostProcessing_setup.asset b/Assets/Art/PostProcessing_setup.asset index 8c177fef..748e93b1 100644 --- a/Assets/Art/PostProcessing_setup.asset +++ b/Assets/Art/PostProcessing_setup.asset @@ -83,4 +83,4 @@ MonoBehaviour: value: 360 sampleCount: overrideState: 1 - value: 5 + value: 12 diff --git a/Assets/Art/Sound.meta b/Assets/Art/Sound.meta new file mode 100644 index 00000000..8ea43879 --- /dev/null +++ b/Assets/Art/Sound.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 27a9dc88d783408488dd40fcf72d2a62 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Editor.meta b/Assets/Plugins/Editor.meta deleted file mode 100644 index 850194e2..00000000 --- a/Assets/Plugins/Editor.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 6a58e207379bbc441bd2ef8d321d7707 -folderAsset: yes -DefaultImporter: - userData: diff --git a/Assets/Prefabs/Characters/Saionji.prefab b/Assets/Prefabs/Characters/Saionji.prefab index 02ea1a65..2d66f94f 100644 --- a/Assets/Prefabs/Characters/Saionji.prefab +++ b/Assets/Prefabs/Characters/Saionji.prefab @@ -466,15 +466,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 637138a0ba30abc498c5c9dcf6bb5d78, type: 3} m_Name: m_EditorClassIdentifier: + m_Center: {x: 0, y: 0, z: 0} m_IsActive: 1 m_Group: 0 - m_Tag: 0 + m_Tag: 1 + m_Label: Saionji m_Title: Saionji.HurtBox m_Desc: saionji's hurtbox, didnt effected by gravity m_HintColor: {r: 1, g: 0.9094448, b: 0, a: 0.5} m_Body: {fileID: 0} - m_Center: {x: 0, y: 0, z: 0} m_Size: {x: 1, y: 1, z: 1} + m_DrawGizmo: 1 --- !u!1 &1116262850384336476 GameObject: m_ObjectHideFlags: 0 @@ -3893,7 +3895,7 @@ Animator: m_GameObject: {fileID: 6928613106012578342} m_Enabled: 1 m_Avatar: {fileID: 9000000, guid: 52c45bcd55a32a941a589bb704d33fc0, type: 2} - m_Controller: {fileID: 9100000, guid: 13bbef7934f37d440921ff61ceb4af2e, type: 2} + m_Controller: {fileID: 9100000, guid: 8339fda9cd2fe644f899152ce7ae7879, type: 2} m_CullingMode: 0 m_UpdateMode: 1 m_ApplyRootMotion: 0 @@ -4141,7 +4143,7 @@ MonoBehaviour: m_EditorClassIdentifier: layerMask: serializedVersion: 2 - m_Bits: 4294967295 + m_Bits: 311 DistanceToGround: 0.115 --- !u!114 &3741668519095819896 MonoBehaviour: @@ -4199,6 +4201,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Primitives: - {fileID: 6037765075253890940} + - {fileID: 4380598530412210718} --- !u!114 &6037765075253890940 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4211,15 +4214,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 637138a0ba30abc498c5c9dcf6bb5d78, type: 3} m_Name: m_EditorClassIdentifier: + m_Center: {x: 0, y: 0.56, z: 0} m_IsActive: 1 m_Group: 0 - m_Tag: 0 + m_Tag: 1 + m_Label: Saionji m_Title: Saionji.Body m_Desc: "\u897F\u56ED\u5BFA\u7684\u8EAB\u4F53\uFF0C\u4F1A\u53C2\u4E0E\u7269\u7406\u8BA1\u7B97\uFF0C\u5E95\u8FB9\u6C38\u8FDC\u662F\u811A\uFF0C\u5927\u5C0F\u4E0D\u9700\u8981\u6539\u53D8" m_HintColor: {r: 0.14796188, g: 0.8962264, b: 0.183694, a: 0.5} m_Body: {fileID: 6037765075253890941} - m_Center: {x: 0, y: 0.71, z: 0} - m_Size: {x: 0.49, y: 1.43, z: 1} + m_Size: {x: 0.49, y: 1.1, z: 1} + m_DrawGizmo: 1 --- !u!114 &6037765075253890941 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Demo/SaionjiShowOff.unity b/Assets/Scenes/Demo/SaionjiShowOff.unity index a2e8b59a..958819c1 100644 --- a/Assets/Scenes/Demo/SaionjiShowOff.unity +++ b/Assets/Scenes/Demo/SaionjiShowOff.unity @@ -315,6 +315,36 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 274343785} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &321639731 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 321639732} + m_Layer: 0 + m_Name: GameObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &321639732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 321639731} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: -0.489} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1546193663} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &433912767 GameObject: m_ObjectHideFlags: 3 @@ -455,6 +485,36 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &471762089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 471762090} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &471762090 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 471762089} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.466} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1546193663} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &512751077 GameObject: m_ObjectHideFlags: 0 @@ -5205,7 +5265,7 @@ Camera: height: 1 near clip plane: 0.1 far clip plane: 100 - field of view: 60.92537 + field of view: 56.985023 orthographic: 0 orthographic size: 5 m_Depth: -1 @@ -5230,7 +5290,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 534669902} - m_LocalRotation: {x: 0.14655274, y: 0.00023932688, z: -0.000035456844, w: 0.98920286} + m_LocalRotation: {x: 0.14655274, y: 0.00023932691, z: -0.00003545685, w: 0.98920286} m_LocalPosition: {x: 2.4494188, y: -0.78, z: -1.2200003} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -5396,7 +5456,7 @@ MonoBehaviour: m_EditorClassIdentifier: layerMask: serializedVersion: 2 - m_Bits: 4294967295 + m_Bits: 311 DistanceToGround: 0.115 --- !u!114 &664294407 MonoBehaviour: @@ -5548,7 +5608,7 @@ GameObject: m_Component: - component: {fileID: 788647719} m_Layer: 0 - m_Name: Env + m_Name: Enviroment m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -5596,7 +5656,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 801756637} - m_LocalRotation: {x: 0.14655274, y: 0.00023932688, z: -0.000035456844, w: 0.98920286} + m_LocalRotation: {x: 0.14655274, y: 0.00023932691, z: -0.00003545685, w: 0.98920286} m_LocalPosition: {x: 2.4494188, y: -0.78, z: -1.2200003} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -5651,6 +5711,7 @@ GameObject: - component: {fileID: 804880620} - component: {fileID: 804880619} - component: {fileID: 804880618} + - component: {fileID: 804880621} m_Layer: 0 m_Name: Plane m_TagString: Walkable @@ -5731,6 +5792,29 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 804880616} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &804880621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 804880616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 637138a0ba30abc498c5c9dcf6bb5d78, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Center: {x: 0, y: -0.1, z: 0} + m_IsActive: 1 + m_Group: 0 + m_Tag: 0 + m_Label: + m_Title: + m_Desc: + m_HintColor: {r: 0, g: 1, b: 0.098634005, a: 0.5} + m_Body: {fileID: 0} + m_Size: {x: 40, y: 0.2, z: 17} + m_DrawGizmo: 0 --- !u!1 &837570910 GameObject: m_ObjectHideFlags: 0 @@ -6874,6 +6958,39 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1546193662 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3741668520236251698, guid: 83d445123a203b14298b7a7662a0a470, + type: 3} + m_PrefabInstance: {fileID: 3741668519200845148} + m_PrefabAsset: {fileID: 0} +--- !u!4 &1546193663 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3741668520236251699, guid: 83d445123a203b14298b7a7662a0a470, + type: 3} + m_PrefabInstance: {fileID: 3741668519200845148} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1546193664 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1546193662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6c2c9828fec98747a1b0680f47bed80, type: 3} + m_Name: + m_EditorClassIdentifier: + UseWith2D: 0 + SortingLayerName: + SortingOrder: 0 + PointStart: {fileID: 321639732} + PointEnd: {fileID: 471762090} + MaxFrame: 10 + Granularity: 60 + MyColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 0.5019608} + MyMaterial: {fileID: 2100000, guid: 9db63a4774ae8954ab6f503f10fb20e4, type: 2} --- !u!1 &1578277104 GameObject: m_ObjectHideFlags: 0 @@ -7224,21 +7341,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6037765075253890940, guid: 83d445123a203b14298b7a7662a0a470, - type: 3} - propertyPath: m_Tag - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6037765075253890940, guid: 83d445123a203b14298b7a7662a0a470, - type: 3} - propertyPath: m_Size.y - value: 1.1 - objectReference: {fileID: 0} - - target: {fileID: 6037765075253890940, guid: 83d445123a203b14298b7a7662a0a470, - type: 3} - propertyPath: m_Center.y - value: 0.56 - objectReference: {fileID: 0} - target: {fileID: 6928613106012578342, guid: 83d445123a203b14298b7a7662a0a470, type: 3} propertyPath: m_Name diff --git a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs index 39298b6f..6732cf57 100644 --- a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs +++ b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using UnityEngine; /// -/// 攻击ability +/// 单个招式ability /// public class AttackAbilityBase : AbilityBase { diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs new file mode 100644 index 00000000..1c27a487 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActionDontUseGravity : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta new file mode 100644 index 00000000..9957eef0 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 500bcab3888d71747971dfa5f364fcd6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs new file mode 100644 index 00000000..da83d163 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ActionUseGravity : ActionBase +{ + public override void Execute() + { + } +} diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta new file mode 100644 index 00000000..42eeb7aa --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b25d9149f0503645907db055a0e94f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs new file mode 100644 index 00000000..ec4e489c --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionCheckHp : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta new file mode 100644 index 00000000..e5b205b2 --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e4b80b2be76ae9149af7b8a57f1e68ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs new file mode 100644 index 00000000..c14bff3c --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ConditionCheckMp : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs.meta new file mode 100644 index 00000000..d920a18f --- /dev/null +++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a603843f7ac083c45ba5b2ec23d4cc0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Physics/DefendBox.cs b/Assets/Scripts/Physics/DefendBox.cs deleted file mode 100644 index 730fe640..00000000 --- a/Assets/Scripts/Physics/DefendBox.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class DefendBox : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/Scripts/Physics/DefendBox.cs.meta b/Assets/Scripts/Physics/DefendBox.cs.meta deleted file mode 100644 index bc2f10ad..00000000 --- a/Assets/Scripts/Physics/DefendBox.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cb44b541bd6b6f747bb9079c7249d23f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Physics/HitBox.cs b/Assets/Scripts/Physics/HitBox.cs deleted file mode 100644 index a6337abd..00000000 --- a/Assets/Scripts/Physics/HitBox.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class HitBox : PhysicsBox -{ - -} diff --git a/Assets/Scripts/Physics/HitBox.cs.meta b/Assets/Scripts/Physics/HitBox.cs.meta deleted file mode 100644 index f220b38f..00000000 --- a/Assets/Scripts/Physics/HitBox.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 73d73d5d2dc8d324b8b75ccd818af01d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Physics/HurtBox.cs b/Assets/Scripts/Physics/HurtBox.cs deleted file mode 100644 index c7fd97bd..00000000 --- a/Assets/Scripts/Physics/HurtBox.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class HurtBox : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/Scripts/Physics/HurtBox.cs.meta b/Assets/Scripts/Physics/HurtBox.cs.meta deleted file mode 100644 index c74284f1..00000000 --- a/Assets/Scripts/Physics/HurtBox.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fdb3c8999ca3f954e81886171ce9517f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Physics/PhysicsBox.cs b/Assets/Scripts/Physics/PhysicsBox.cs index 657aea71..8c93a1e1 100644 --- a/Assets/Scripts/Physics/PhysicsBox.cs +++ b/Assets/Scripts/Physics/PhysicsBox.cs @@ -29,9 +29,11 @@ public class PhysicsBox : PhysicsPrimitive public float Wide { get { return m_Size.y; } } public float Height { get { return m_Size.z; } } + public bool m_DrawGizmo = true; + public void OnDrawGizmos() { - if (!m_IsActive) + if (!m_IsActive || !m_DrawGizmo) return; Vector3 pos = Position; Gizmos.color = m_HintColor; diff --git a/Assets/Scripts/Physics/PhysicsHelper.cs b/Assets/Scripts/Physics/PhysicsHelper.cs index 94916bfc..aa31108e 100644 --- a/Assets/Scripts/Physics/PhysicsHelper.cs +++ b/Assets/Scripts/Physics/PhysicsHelper.cs @@ -2,12 +2,23 @@ using System.Collections.Generic; using UnityEngine; +enum CollisionType +{ + BallvsBall = 1, + BallvsBox, + BoxvsBox +} + + /// /// 碰撞的信息 /// public class PhysicsCollisionInfo { - + CollisionType type; + PhysicsPrimitive prim1; + PhysicsPrimitive prim2; + Vector3 contacts; } public sealed class PhysicsHelper @@ -34,6 +45,39 @@ public sealed class PhysicsHelper return true; } + public static bool BallvsRay(PhysicsBall ball, Vector3 ray) + { + return false; + } + + public static bool BoxvsRay(PhysicsBox box, Vector3 ray) + { + return false; + } + + public static bool RayvsRay(Vector3 ray1, Vector3 ray2) + { + return false; + } + + public static bool PrimvsPrim(PhysicsPrimitive prim1, PhysicsPrimitive prim2, out PhysicsCollisionInfo info) + { + if(prim1.Type == PrimitiveType.Ball) + { + if (prim2.Type == PrimitiveType.Ball) + return BallvsBall2D(prim1 as PhysicsBall, prim2 as PhysicsBall, out info); + else + return BallvsBox2D(prim1 as PhysicsBall, prim2 as PhysicsBox, out info); + } + else + { + if (prim2.Type == PrimitiveType.Ball) + return BallvsBox2D(prim2 as PhysicsBall, prim1 as PhysicsBox, out info); + else + return BoxvsBox2D(prim1 as PhysicsBox, prim2 as PhysicsBox, out info); + } + } + #endregion public static bool BallvsBall(PhysicsBall ball1, PhysicsBall ball2, out PhysicsCollisionInfo info) diff --git a/Assets/Scripts/Physics/PhysicsPrimitive.cs b/Assets/Scripts/Physics/PhysicsPrimitive.cs index 99549db3..59c56aaf 100644 --- a/Assets/Scripts/Physics/PhysicsPrimitive.cs +++ b/Assets/Scripts/Physics/PhysicsPrimitive.cs @@ -64,6 +64,7 @@ public abstract class PhysicsPrimitive : MonoBehaviour } } + [Tooltip("给primitive分组,决定大组和大组之间是否有碰撞检测")] [SerializeField] protected PhysicsGroup m_Group; public PhysicsGroup Group @@ -74,6 +75,7 @@ public abstract class PhysicsPrimitive : MonoBehaviour } } + [Tooltip("给primitive一个标记,表明它的从属关系。帮助做hitbox和hurtbox")] [SerializeField] protected PhysicsTag m_Tag; public PhysicsTag Tag @@ -84,7 +86,19 @@ public abstract class PhysicsPrimitive : MonoBehaviour } } - [SerializeField] + [Tooltip("同一个标签的没有碰撞检测")] + [SerializeField] + protected string m_Label; + public string Label + { + get + { + return m_Label; + } + } + + [Tooltip("单个碰撞体的描述(名称),作为标识用来识别")] + [SerializeField] protected string m_Title; public string Title { diff --git a/Assets/Scripts/Physics/PhysicsWorld.cs b/Assets/Scripts/Physics/PhysicsWorld.cs index 5ef747b2..3514934c 100644 --- a/Assets/Scripts/Physics/PhysicsWorld.cs +++ b/Assets/Scripts/Physics/PhysicsWorld.cs @@ -1,16 +1,7 @@ -using System.Collections; + using System.Collections; using System.Collections.Generic; using UnityEngine; -/// -/// primitive标记 -/// -public enum PhysicsTag -{ - Player = 1, // 从属于玩家 - Oponent = 1 << 1, // 从属于对手 -} - /// /// primitive分类 /// @@ -20,17 +11,36 @@ public enum PhysicsGroup Prop, // 物体 Ground, // 地面 Wall, // 墙面 + + GroupCount, +} + +/// +/// primitive标记 +/// +public enum PhysicsTag +{ + Player = 1, // 从属于玩家 + Oponent = 1 << 1, // 从属于对手 } public class PhysicsWorld : Singleton { - private int m_UpdateRate = 30; + private int m_UpdateRate = 60; // 重力加速度 private readonly Vector3 m_Gravity = new Vector3(0, -9.8f, 0); // 当前管理的碰撞体 private List m_Primitives; private float m_TimeCount; + private readonly int[] m_CollisionTable = { + // wall ground prop character +/*character*/ 1, 1, 1, 1, +/*prop */ 1, 1, 0, 0, +/*ground */ 0, 0, 0, 0, +/*wall */ 0, 0, 0, 0, + }; + public void Init() { m_Primitives = new List(); @@ -74,9 +84,33 @@ public class PhysicsWorld : Singleton private void Tick() { - float deltaTime = 1f / m_UpdateRate; - //Debug.Log("Physics Tick"); + float deltaTime = 1f / m_UpdateRate; + int groupCount = (int)PhysicsGroup.GroupCount; + for (int i = 0; i < m_Primitives.Count; ++i) + { + PhysicsPrimitive prim1 = m_Primitives[i]; + for(int j = i + 1; j < m_Primitives.Count; ++j) + { + PhysicsPrimitive prim2 = m_Primitives[j]; + + // check collision by group + int minType = Mathf.Min((int)prim1.Type, (int)prim2.Type); + int maxType = Mathf.Max((int)prim1.Type, (int)prim2.Type); + if (m_CollisionTable[minType * groupCount + groupCount - maxType - 1] == 0) + continue; + + // check collision by label + if (prim1.Label == prim2.Label) + continue; + PhysicsCollisionInfo info; + if(PhysicsHelper.PrimvsPrim(prim1, prim2, out info)) + { + //没有physics body的primitive将不会被移动,只有那些绑定了physics body的会被施加物理效果,比如角色身体、物品 + + } + } + } } -} +} \ No newline at end of file diff --git a/Assets/Scripts/Test/SaionjiScript.cs b/Assets/Scripts/Test/SaionjiScript.cs index a3216dd5..f10c9b1d 100644 --- a/Assets/Scripts/Test/SaionjiScript.cs +++ b/Assets/Scripts/Test/SaionjiScript.cs @@ -17,16 +17,6 @@ public partial class SaionjiScript : MonoBehaviour IdleHash = Animator.StringToHash("Idle Fight 0"); } - private void OnCollisionEnter(Collision collision) - { - Debug.Log("OnCollisionEnter()"); - } - - private void OnTriggerEnter(Collider other) - { - Debug.Log("OnTriggerEnter()"); - } - private void Update() { diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs index cc6e8caf..59d55630 100644 --- a/Assets/Scripts/Test/SaionjiScript_Ability.cs +++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs @@ -9,6 +9,16 @@ public partial class SaionjiScript : MonoBehaviour /// AbilitySystem m_AbilitySystem = new AbilitySystem(); + ConditionBase And(ConditionBase c1, ConditionBase c2) + { + return new ConditionAnd(c1, c2); + } + + ConditionBase Or(ConditionBase c1, ConditionBase c2) + { + return new ConditionOr(c1,c2); + } + /// /// 设置abilities /// -- cgit v1.1-26-g67d0