summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assets/Art/PostProcessing_setup.asset2
-rw-r--r--Assets/Art/Sound.meta8
-rw-r--r--Assets/Plugins/Editor.meta5
-rw-r--r--Assets/Prefabs/Characters/Saionji.prefab19
-rw-r--r--Assets/Scenes/Demo/SaionjiShowOff.unity142
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs2
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs (renamed from Assets/Scripts/Physics/HurtBox.cs)36
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta (renamed from Assets/Scripts/Physics/HitBox.cs.meta)2
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs (renamed from Assets/Scripts/Physics/HitBox.cs)18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta (renamed from Assets/Scripts/Physics/HurtBox.cs.meta)2
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs (renamed from Assets/Scripts/Physics/DefendBox.cs)36
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta (renamed from Assets/Scripts/Physics/DefendBox.cs.meta)2
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionCheckMp.cs.meta11
-rw-r--r--Assets/Scripts/Physics/PhysicsBox.cs4
-rw-r--r--Assets/Scripts/Physics/PhysicsHelper.cs46
-rw-r--r--Assets/Scripts/Physics/PhysicsPrimitive.cs16
-rw-r--r--Assets/Scripts/Physics/PhysicsWorld.cs62
-rw-r--r--Assets/Scripts/Test/SaionjiScript.cs10
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Ability.cs10
20 files changed, 343 insertions, 108 deletions
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;
/// <summary>
-/// 攻击ability
+/// 单个招式ability
/// </summary>
public class AttackAbilityBase : AbilityBase
{
diff --git a/Assets/Scripts/Physics/HurtBox.cs b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs
index c7fd97bd..1c27a487 100644
--- a/Assets/Scripts/Physics/HurtBox.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs
@@ -1,18 +1,18 @@
-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()
- {
-
- }
-}
+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/Physics/HitBox.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta
index f220b38f..9957eef0 100644
--- a/Assets/Scripts/Physics/HitBox.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionDontUseGravity.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 73d73d5d2dc8d324b8b75ccd818af01d
+guid: 500bcab3888d71747971dfa5f364fcd6
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Assets/Scripts/Physics/HitBox.cs b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs
index a6337abd..da83d163 100644
--- a/Assets/Scripts/Physics/HitBox.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs
@@ -1,8 +1,10 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class HitBox : PhysicsBox
-{
-
-}
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionUseGravity : ActionBase
+{
+ public override void Execute()
+ {
+ }
+}
diff --git a/Assets/Scripts/Physics/HurtBox.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta
index c74284f1..42eeb7aa 100644
--- a/Assets/Scripts/Physics/HurtBox.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionUseGravity.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: fdb3c8999ca3f954e81886171ce9517f
+guid: 5b25d9149f0503645907db055a0e94f5
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Assets/Scripts/Physics/DefendBox.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs
index 730fe640..ec4e489c 100644
--- a/Assets/Scripts/Physics/DefendBox.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs
@@ -1,18 +1,18 @@
-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()
- {
-
- }
-}
+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/Physics/DefendBox.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta
index bc2f10ad..e5b205b2 100644
--- a/Assets/Scripts/Physics/DefendBox.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCheckHp.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: cb44b541bd6b6f747bb9079c7249d23f
+guid: e4b80b2be76ae9149af7b8a57f1e68ef
MonoImporter:
externalObjects: {}
serializedVersion: 2
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/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
+}
+
+
/// <summary>
/// 碰撞的信息
/// </summary>
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,17 +1,8 @@
-using System.Collections;
+ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
-/// primitive标记
-/// </summary>
-public enum PhysicsTag
-{
- Player = 1, // 从属于玩家
- Oponent = 1 << 1, // 从属于对手
-}
-
-/// <summary>
/// primitive分类
/// </summary>
public enum PhysicsGroup
@@ -20,17 +11,36 @@ public enum PhysicsGroup
Prop, // 物体
Ground, // 地面
Wall, // 墙面
+
+ GroupCount,
+}
+
+/// <summary>
+/// primitive标记
+/// </summary>
+public enum PhysicsTag
+{
+ Player = 1, // 从属于玩家
+ Oponent = 1 << 1, // 从属于对手
}
public class PhysicsWorld : Singleton<PhysicsWorld>
{
- private int m_UpdateRate = 30;
+ private int m_UpdateRate = 60;
// 重力加速度
private readonly Vector3 m_Gravity = new Vector3(0, -9.8f, 0);
// 当前管理的碰撞体
private List<PhysicsPrimitive> 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<PhysicsPrimitive>();
@@ -74,9 +84,33 @@ public class PhysicsWorld : Singleton<PhysicsWorld>
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
/// </summary>
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);
+ }
+
/// <summary>
/// 设置abilities
/// </summary>