summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-26 08:36:27 +0800
committerchai <chaifix@163.com>2020-10-26 08:36:27 +0800
commit3d3f0b7ede44569ecaab523350feede9fee383c3 (patch)
tree9df6c24adafa7e77287f9f8351746d8da692bf4f /Assets/Scripts
parent65ed53a40f990e895305ff17a5e48e3cd6b8785b (diff)
* ability system
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs38
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs11
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs21
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/CameraActions.meta8
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/EffectActions.meta (renamed from Assets/Scripts/AbilitySystem/Actions/ActionEffects.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs (renamed from Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs.meta (renamed from Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs (renamed from Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs)38
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs.meta (renamed from Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/UberActions.meta8
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/Camera.meta8
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionCombo.cs2
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs9
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs)62
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs.meta (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs)0
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs.meta (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs)56
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs.meta (renamed from Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Trigger.cs30
-rw-r--r--Assets/Scripts/Physics/PhysicsBody.cs18
-rw-r--r--Assets/Scripts/Physics/PhysicsPrimitive.cs214
-rw-r--r--Assets/Scripts/Physics/PhysicsWorld.cs17
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Ability.cs80
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Physics.cs25
39 files changed, 612 insertions, 229 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
index fc4ce7e1..7b178621 100644
--- a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
+++ b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
@@ -2,11 +2,18 @@
using System.Collections.Generic;
using UnityEngine;
+public struct AttackAbilityConfig
+{
+ public Vector3 velocity; // velocity setup
+ public int motion;
+ public Animator animator;
+ public PhysicsBody body;
+}
+
// 单独的一个招式
public class AttackAbility : AbilityBase
{
- Animator m_Animator;
- int m_AnimHash;
+ AttackAbilityConfig m_Config = new AttackAbilityConfig();
/// <summary>
/// 在跑动状态时可以切换的ability
@@ -27,15 +34,21 @@ public class AttackAbility : AbilityBase
}
}
- public AttackAbility(Animator animator, int animation)
+ public AttackAbility(Animator animator, int animation, PhysicsBody body = null)
{
- m_Animator = animator;
- m_AnimHash = animation;
+ m_Config.animator = animator;
+ m_Config.motion = animation;
+ m_Config.velocity = Vector3.zero;
+ m_Config.body = body;
}
- public override void OnInit()
+ public AttackAbility(AttackAbilityConfig config)
{
+ m_Config = config;
+ }
+ public override void OnInit()
+ {
}
public override void OnDefend()
@@ -46,8 +59,13 @@ public class AttackAbility : AbilityBase
public override void OnEnter()
{
m_TimeCount = 0;
- // 招式不要有过渡时间
- m_Animator.CrossFade(m_AnimHash, 0);
+
+ m_Config.animator.CrossFade(m_Config.motion, 0);
+
+ if(m_Config.body != null)
+ {
+ m_Config.body.Velocity = m_Config.velocity;
+ }
}
public override void OnExit()
@@ -69,8 +87,8 @@ public class AttackAbility : AbilityBase
public override void OnUpdate()
{
- AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
- if(info.shortNameHash == m_AnimHash && info.normalizedTime >= 0.99f)
+ AnimatorStateInfo info = m_Config.animator.GetCurrentAnimatorStateInfo(0);
+ if(info.shortNameHash == m_Config.motion && info.normalizedTime >= 0.99f)
{
m_TimeCount += Time.deltaTime;
}
diff --git a/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs
new file mode 100644
index 00000000..4b8e5381
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs
@@ -0,0 +1,11 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class JumpAbility : AbilityBase
+{
+ Animator m_Animator;
+
+
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs.meta b/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs.meta
new file mode 100644
index 00000000..6c67c462
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Abilities/JumpAbility.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ed5b337c63528354f8b4f2ba0a59481d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs b/Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs
new file mode 100644
index 00000000..9db10173
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionPosAdd : 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/ActionPositionAdd.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs.meta
new file mode 100644
index 00000000..209f3795
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionPositionAdd.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc9cfba8e327546488ec1c83add3e127
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs b/Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs
new file mode 100644
index 00000000..8869801d
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionSetFeetPosition : 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/ActionSetFeetPosition.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs.meta
new file mode 100644
index 00000000..87656dc0
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetFeetPosition.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: da4e331f7a5282e4ca369384e69e98a4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs b/Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs
new file mode 100644
index 00000000..913eb3d2
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionSetPosition : 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/ActionSetPosition.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs.meta
new file mode 100644
index 00000000..466f5692
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetPosition.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6125833c9bb56f546bbd74cb0c7c32b3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs b/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs
new file mode 100644
index 00000000..3289ac81
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs
@@ -0,0 +1,21 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionSetVelocity : ActionBase
+{
+ PhysicsBody m_Body;
+
+ Vector3 m_Velocity;
+
+ public ActionSetVelocity(PhysicsBody body, Vector3 velocity)
+ {
+ m_Body = body;
+ m_Velocity = velocity;
+ }
+
+ public override void Execute()
+ {
+ m_Body.Velocity = m_Velocity;
+ }
+}
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs.meta
new file mode 100644
index 00000000..3f677ed0
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionSetVelocity.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0334529cb8b95d5449a4d50a41099c0e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/CameraActions.meta b/Assets/Scripts/AbilitySystem/Actions/CameraActions.meta
new file mode 100644
index 00000000..a4650ff8
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/CameraActions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7d30a503b2bf1b04284baaadbf080a1f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs
new file mode 100644
index 00000000..e35d43ad
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionMoveCamera : 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/CameraActions/ActionMoveCamera.cs.meta b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs.meta
new file mode 100644
index 00000000..3812e732
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionMoveCamera.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67f15f0e55848fe4187e667a2e3e7d76
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs
new file mode 100644
index 00000000..5a22bc1e
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionPauseTime : 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/CameraActions/ActionPauseTime.cs.meta b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs.meta
new file mode 100644
index 00000000..5cca5838
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/CameraActions/ActionPauseTime.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4f2e2377ca8624a4097987aa981db53d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionEffects.meta b/Assets/Scripts/AbilitySystem/Actions/EffectActions.meta
index 17a426dd..17a426dd 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionEffects.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/EffectActions.meta
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs
index 2da01daf..2da01daf 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs.meta b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs.meta
index 185da50b..185da50b 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionDisableGhost.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionDisableGhost.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs
index 05d3a1a5..fa2d8e74 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs
@@ -1,19 +1,19 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-// 残影特效
-public class ActionEffectGhost : ActionBase
-{
- CharacterGhostEffect m_GhostEffect;
-
- public ActionEffectGhost(CharacterGhostEffect effect)
- {
- m_GhostEffect = effect;
- }
-
- public override void Execute()
- {
- m_GhostEffect.IsEnable = true;
- }
-}
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+// 残影特效
+public class ActionEffectGhost : ActionBase
+{
+ CharacterGhostEffect m_GhostEffect;
+
+ public ActionEffectGhost(CharacterGhostEffect effect)
+ {
+ m_GhostEffect = effect;
+ }
+
+ public override void Execute()
+ {
+ m_GhostEffect.IsEnable = true;
+ }
+}
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs.meta b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs.meta
index 6a55db7d..6a55db7d 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionEffects/ActionEffectGhost.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/EffectActions/ActionEffectGhost.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Actions/UberActions.meta b/Assets/Scripts/AbilitySystem/Actions/UberActions.meta
new file mode 100644
index 00000000..c2620d0e
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/UberActions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 74422fa2d75a19040b26845660f7b51b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs b/Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs
new file mode 100644
index 00000000..b62d3b37
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionUber : 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/UberActions/ActionUber.cs.meta b/Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs.meta
new file mode 100644
index 00000000..69d003aa
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/UberActions/ActionUber.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5986fb71b8f521d4c9bffe103916f1c5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Conditions/Camera.meta b/Assets/Scripts/AbilitySystem/Conditions/Camera.meta
new file mode 100644
index 00000000..bfa55719
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/Camera.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8d7f28027add89c448243fbe5ea14144
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionCombo.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionCombo.cs
index 7664a891..1b6159cb 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionCombo.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionCombo.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
/// <summary>
-/// 连击操作,综合ConditionAnimRange和ConditionCommand
+/// 连击操作,综合ConditionMotionRange和ConditionCommand
/// </summary>
public class ConditionCombo : ConditionBase
{
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
index 80bae491..2c631970 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
@@ -7,8 +7,15 @@ using UnityEngine;
/// </summary>
public class ConditionInAir : ConditionBase
{
+ PhysicsPrimitive m_Prim;
+
+ public ConditionInAir(PhysicsPrimitive prim)
+ {
+ m_Prim = prim;
+ }
+
public override bool Evaluate()
{
- return false;
+ return m_Prim.Bound.w > PhysicsWorld.Ground;
}
}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs
index cfdcfab5..18d71e86 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs
@@ -1,31 +1,31 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 动画已经播放完毕
-/// </summary>
-public class ConditionAnimAtEnd : ConditionBase
-{
- Animator m_Animator;
- int m_AnimationHash;
-
- public ConditionAnimAtEnd(Animator animator, int animationHash)
- : base()
- {
- m_Animator = animator;
- m_AnimationHash = animationHash;
- }
-
- public override bool Evaluate()
- {
- AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
- if(info.shortNameHash == m_AnimationHash)
- {
- float t = info.normalizedTime;
- if (t >= 0.99f)
- return true;
- }
- return false;
- }
-}
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 动画已经播放完毕
+/// </summary>
+public class ConditionMotionAtEnd : ConditionBase
+{
+ Animator m_Animator;
+ int m_AnimationHash;
+
+ public ConditionMotionAtEnd(Animator animator, int animationHash)
+ : base()
+ {
+ m_Animator = animator;
+ m_AnimationHash = animationHash;
+ }
+
+ public override bool Evaluate()
+ {
+ AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
+ if(info.shortNameHash == m_AnimationHash)
+ {
+ float t = info.normalizedTime;
+ if (t >= 0.99f)
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs.meta
index 1688dd68..1688dd68 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimAtEnd.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionAtEnd.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs
index 282ef929..282ef929 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs.meta
index 3fc88fb1..3fc88fb1 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionFrameRange.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs
index b8f98065..c902ae26 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs
@@ -1,28 +1,28 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 某个动画是否播放到了某个时间(归一化了的)范围内
-/// </summary>
-public sealed class ConditionAnimRange : ConditionBase
-{
- Vector2 m_TimeRange = new Vector2();
- Animator m_Animator;
-
- public ConditionAnimRange(Animator animator, float start, float end)
- {
- m_Animator = animator;
-
- m_TimeRange.Set(start, end);
- }
-
- public override bool Evaluate()
- {
- AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
- float time = info.normalizedTime;
- bool result = time >= m_TimeRange.x && time <= m_TimeRange.y;
- return result;
- }
-
-}
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 某个动画是否播放到了某个时间(归一化了的)范围内
+/// </summary>
+public sealed class ConditionMotionRange : ConditionBase
+{
+ Vector2 m_TimeRange = new Vector2();
+ Animator m_Animator;
+
+ public ConditionMotionRange(Animator animator, float start, float end)
+ {
+ m_Animator = animator;
+
+ m_TimeRange.Set(start, end);
+ }
+
+ public override bool Evaluate()
+ {
+ AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0);
+ float time = info.normalizedTime;
+ bool result = time >= m_TimeRange.x && time <= m_TimeRange.y;
+ return result;
+ }
+
+}
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs.meta
index 926a8560..926a8560 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimRange.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionMotionRange.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Trigger.cs b/Assets/Scripts/AbilitySystem/Trigger.cs
index dc173a6d..70a6d0f4 100644
--- a/Assets/Scripts/AbilitySystem/Trigger.cs
+++ b/Assets/Scripts/AbilitySystem/Trigger.cs
@@ -2,26 +2,46 @@
using System.Collections.Generic;
using UnityEngine;
+public enum TriggerOnlyOnce
+{
+ Off = 0,
+ On = 1,
+}
+
+public enum TriggerSwallow
+{
+ Off = 0,
+ On = 1
+}
+
+
/// <summary>
/// 不同效果的trigger继承这个基类
/// </summary>
public sealed class Trigger
{
- public bool Swallow;
+ private TriggerSwallow m_Swallow;
+ public bool Swallow
+ {
+ get
+ {
+ return m_Swallow == TriggerSwallow.On;
+ }
+ }
private ConditionBase m_Condition;
private List<ActionBase> m_ActionChain = new List<ActionBase>();
- public Trigger(ConditionBase condition, List<ActionBase> actions, bool onlyOnce = false, bool swallow = true)
+ public Trigger(ConditionBase condition, List<ActionBase> actions, TriggerOnlyOnce onlyOnce = TriggerOnlyOnce.Off, TriggerSwallow swallow = TriggerSwallow.On)
{
- Swallow = swallow;
+ m_Swallow = swallow;
m_Condition = condition;
m_ActionChain.AddRange(actions);
}
- public Trigger(ConditionBase condition, ActionBase action, bool onlyOnce = false, bool swallow = true)
+ public Trigger(ConditionBase condition, ActionBase action, TriggerOnlyOnce onlyOnce = TriggerOnlyOnce.Off, TriggerSwallow swallow = TriggerSwallow.On)
{
- Swallow = swallow;
+ m_Swallow = swallow;
m_Condition = condition;
m_ActionChain.Add(action);
}
diff --git a/Assets/Scripts/Physics/PhysicsBody.cs b/Assets/Scripts/Physics/PhysicsBody.cs
index 84a5fcb0..8fc33fa7 100644
--- a/Assets/Scripts/Physics/PhysicsBody.cs
+++ b/Assets/Scripts/Physics/PhysicsBody.cs
@@ -45,6 +45,7 @@ public sealed class PhysicsBody : MonoBehaviour
}
}
+ [Tooltip("ignore gravity?")]
[SerializeField]
private bool m_UseGravity;
public bool UseGravity
@@ -69,11 +70,26 @@ public sealed class PhysicsBody : MonoBehaviour
}
}
- [Tooltip("摩擦力")]
+ [Tooltip("摩擦系数")]
[SerializeField]
private float m_Frication;
+ [Tooltip("力")]
+ [SerializeField]
+ private Vector3 m_Force;
+
[SerializeField]
private PhysicsPrimitive m_Primitive;
+
+ public void AddForce(Vector3 force)
+ {
+ m_Force += force;
+ }
+
+ public void SetForce(Vector3 force)
+ {
+ m_Force = force;
+ }
+
}
diff --git a/Assets/Scripts/Physics/PhysicsPrimitive.cs b/Assets/Scripts/Physics/PhysicsPrimitive.cs
index f52fb9e9..491a6204 100644
--- a/Assets/Scripts/Physics/PhysicsPrimitive.cs
+++ b/Assets/Scripts/Physics/PhysicsPrimitive.cs
@@ -15,76 +15,76 @@ public enum PrimitiveType
/// </summary>
public abstract class PhysicsPrimitive : MonoBehaviour
{
- public virtual PrimitiveType Type
- {
- get
- {
- return PrimitiveType.None;
- }
- }
-
- /// <summary>
- /// 世界坐标,物理模拟是在世界空间,本地坐标没有意义
- /// </summary>
- public Vector3 Position
- {
- get
- {
+ public virtual PrimitiveType Type
+ {
+ get
+ {
+ return PrimitiveType.None;
+ }
+ }
+
+ /// <summary>
+ /// 世界坐标,物理模拟是在世界空间,本地坐标没有意义
+ /// </summary>
+ public Vector3 Position
+ {
+ get
+ {
Vector3 euler = Quaternion.ToEulerAngles(transform.rotation);
euler.y = Mathf.Rad2Deg * euler.y;
Vector3 res = m_Center;
res.x = (euler.y > 90 && euler.y <= 180) ? -res.x : res.x;
res = transform.position + res;
- return res;
- }
- }
-
- [SerializeField]
- /// <summary>
- /// 这个primitive是否参与物理计算,用来快速给物体取消和恢复重力影响
- /// </summary>
- protected bool m_IsActive;
- public bool IsActive
- {
- get
- {
- return m_IsActive;
- }
- }
-
- /// <summary>
- /// 唯一ID
- /// </summary>
- protected int m_ID;
- public int ID
- {
- get
- {
- return m_ID;
- }
- }
+ return res;
+ }
+ }
+
+ [SerializeField]
+ /// <summary>
+ /// 这个primitive是否参与物理计算,用来快速给物体取消和恢复重力影响
+ /// </summary>
+ protected bool m_IsActive;
+ public bool IsActive
+ {
+ get
+ {
+ return m_IsActive;
+ }
+ }
+
+ /// <summary>
+ /// 唯一ID
+ /// </summary>
+ protected int m_ID;
+ public int ID
+ {
+ get
+ {
+ return m_ID;
+ }
+ }
[Tooltip("给primitive分组,决定大组和大组之间是否有碰撞检测")]
- [SerializeField]
- protected PhysicsGroup m_Group;
- public PhysicsGroup Group
- {
- get
- {
- return m_Group;
- }
- }
+ [SerializeField]
+ protected PhysicsGroup m_Group;
+ public PhysicsGroup Group
+ {
+ get
+ {
+ return m_Group;
+ }
+ }
[Tooltip("给primitive一个标记,表明它的从属关系。帮助做hitbox和hurtbox")]
- [SerializeField]
- protected PhysicsTag m_Tag;
- public PhysicsTag Tag
- {
- get
- {
- return m_Tag;
- }
- }
+ [SerializeField]
+ protected PhysicsTag m_Tag;
+ public PhysicsTag Tag
+ {
+ get
+ {
+ return m_Tag;
+ }
+ }
[Tooltip("同一个标签的没有碰撞检测")]
[SerializeField]
@@ -99,42 +99,42 @@ public abstract class PhysicsPrimitive : MonoBehaviour
[Tooltip("单个碰撞体的描述(名称),作为标识用来识别")]
[SerializeField]
- protected string m_Title;
- public string Title
- {
- get
- {
- return m_Title;
- }
- }
-
- [SerializeField]
- protected string m_Desc;
- public string Desc
- {
- get
- {
- return m_Desc;
- }
- }
-
- /// <summary>
- /// 初始化,设置一些公共数据
- /// </summary>
- protected void OnInit()
- {
- m_ID = UIDManager.Acquire();
+ protected string m_Title;
+ public string Title
+ {
+ get
+ {
+ return m_Title;
+ }
+ }
+
+ [SerializeField]
+ protected string m_Desc;
+ public string Desc
+ {
+ get
+ {
+ return m_Desc;
+ }
+ }
+
+ /// <summary>
+ /// 初始化,设置一些公共数据
+ /// </summary>
+ protected void OnInit()
+ {
+ m_ID = UIDManager.Acquire();
PhysicsWorld.Instance.AddPrimitive(this);
- }
+ }
- protected Color Color_Green = new Color(0,1, 0, 0.5f);
+ protected Color Color_Green = new Color(0, 1, 0, 0.5f);
- [SerializeField]
- protected Color m_HintColor = new Color(0, 0, 0, 0.5f);
+ [SerializeField]
+ protected Color m_HintColor = new Color(0, 0, 0, 0.5f);
- [Tooltip("Physics body, leave blank and primitive will be static.")]
- [SerializeField]
- protected PhysicsBody m_Body;
+ [Tooltip("Physics body, leave blank and primitive will be static.")]
+ [SerializeField]
+ protected PhysicsBody m_Body;
public PhysicsBody Body
{
@@ -149,4 +149,32 @@ public abstract class PhysicsPrimitive : MonoBehaviour
/// </summary>
public Vector3 m_Center;
+ /// <summary>
+ /// 边界:左、右、上、下
+ /// </summary>
+ public Vector4 Bound
+ {
+ get
+ {
+ Vector4 bound = new Vector4();
+ if(this is PhysicsBox)
+ {
+ PhysicsBox box = this as PhysicsBox;
+ bound.x = box.Left;
+ bound.y = box.Right;
+ bound.z = box.Top;
+ bound.w = box.Bottom;
+ }
+ else if(this is PhysicsBall)
+ {
+ PhysicsBall ball = this as PhysicsBall;
+ bound.x = ball.Position.x - ball.Radius;
+ bound.y = ball.Position.x + ball.Radius;
+ bound.z = ball.Position.y + ball.Radius;
+ bound.w = ball.Position.y - ball.Radius;
+ }
+ return bound;
+ }
+ }
+
} \ No newline at end of file
diff --git a/Assets/Scripts/Physics/PhysicsWorld.cs b/Assets/Scripts/Physics/PhysicsWorld.cs
index 7994e14b..8d95dff7 100644
--- a/Assets/Scripts/Physics/PhysicsWorld.cs
+++ b/Assets/Scripts/Physics/PhysicsWorld.cs
@@ -32,7 +32,7 @@ public class PhysicsWorld : Singleton<PhysicsWorld>
{
private int m_UpdateRate = 60;
// 重力加速度
- private readonly Vector3 m_Gravity = new Vector3(0, -12f, 0);
+ private readonly Vector3 m_Gravity = new Vector3(0, -20f, 0);
// 当前管理的碰撞体
private List<PhysicsPrimitive> m_Primitives = new List<PhysicsPrimitive>();
private float m_TimeCount;
@@ -40,7 +40,7 @@ public class PhysicsWorld : Singleton<PhysicsWorld>
private const int _ = 0;
private readonly int[] m_CollisionTable = {
// hurtbox hitBox wall ground prop character
-/*character*/ 0, 0, 1, 1, 1, 1,
+/*character*/ 0, 0, 1, 1, 1, 0,
/*prop */ 0, 0, 1, 1, 0, _,
/*ground */ 0, 0, 0, 0, _, _,
/*wall */ 0, 0, 0, _, _, _,
@@ -54,6 +54,8 @@ public class PhysicsWorld : Singleton<PhysicsWorld>
private List<PhysicsCollisionInfo> m_CollisionInfo = new List<PhysicsCollisionInfo>();
+ public const float Ground = 0.1f;
+
public void Init()
{
m_TimeCount = Time.time;
@@ -218,10 +220,21 @@ public class PhysicsWorld : Singleton<PhysicsWorld>
position += velocity * dt;
body.transform.position = position;
+
+ PhysicsBox box = prim as PhysicsBox;
+ if(box.Bottom < 0.1f)
+ {
+ position.y = 0.1f;
+ body.transform.position = position;
+ velocity.y = 0;
+ body.Velocity = velocity;
+ }
}
void SolveCollision(PhysicsPrimitive prim, PhysicsCollisionInfo collision, float dt)
{
+ return;
+
PhysicsBody body = prim.Body;
if (body == null)
return;
diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs
index 2ed956ef..21901096 100644
--- a/Assets/Scripts/Test/SaionjiScript_Ability.cs
+++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs
@@ -33,21 +33,34 @@ public partial class SaionjiScript : MonoBehaviour
// abilities
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IdleAbility idle = new IdleAbility(animator, Anim_Idle);
+
MoveAbility move = new MoveAbility(animator, Anim_Run);
MoveAbility dash = new MoveAbility(animator, Anim_DashWithSword);
- AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1);
- AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2);
- AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3);
- AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4);
- AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5);
- AttackAbility attkRush = new AttackAbility(animator, Anim_LightAttackRush);
- AttackAbility sideKick = new AttackAbility(animator, Anim_SideKick);
- AttackAbility sideKickRush = new AttackAbility(animator, Anim_SideKickRush);
- AttackAbility superKick = new AttackAbility(animator, Anim_SuperKick);
- AttackAbility gun1 = new AttackAbility(animator, Anim_Gun1);
- AttackAbility gun2 = new AttackAbility(animator, Anim_Gun2);
- AttackAbility gun3 = new AttackAbility(animator, Anim_Gun3);
- AttackAbility gun4 = new AttackAbility(animator, Anim_Gun4);
+
+ AttackAbilityConfig config;
+
+ //招式会绑定一个motion
+ AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1, m_Body);
+ AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2, m_Body);
+ AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3, m_Body);
+ AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4, m_Body);
+ AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5, m_Body);
+ AttackAbility attkRush = new AttackAbility(animator, Anim_LightAttackRush, m_Body);
+
+ config = new AttackAbilityConfig() {
+ animator = this.animator,
+ body = this.m_Body,
+ motion = Anim_SideKick,
+ velocity = new Vector3(20, 1.5f, 0)
+ };
+ AttackAbility sideKick = new AttackAbility(config);
+
+ AttackAbility sideKickRush = new AttackAbility(animator, Anim_SideKickRush, m_Body);
+ AttackAbility superKick = new AttackAbility(animator, Anim_SuperKick, m_Body);
+ AttackAbility gun1 = new AttackAbility(animator, Anim_Gun1, m_Body);
+ AttackAbility gun2 = new AttackAbility(animator, Anim_Gun2, m_Body);
+ AttackAbility gun3 = new AttackAbility(animator, Anim_Gun3, m_Body);
+ AttackAbility gun4 = new AttackAbility(animator, Anim_Gun4, m_Body);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// actions
@@ -155,16 +168,16 @@ public partial class SaionjiScript : MonoBehaviour
move.AddTrigger(trigger);
// dash ability
- trigger = new Trigger(And(new ConditionAnimRange(animator, 0.5f, 1.0f), condCircleCmd), switchToAttk1);
+ trigger = new Trigger(And(new ConditionMotionRange(animator, 0.5f, 1.0f), condCircleCmd), switchToAttk1);
dash.AddTrigger(trigger);
- trigger = new Trigger(new ConditionAnimAtEnd(animator, Anim_DashWithSword), switchToIdle);
+ trigger = new Trigger(new ConditionMotionAtEnd(animator, Anim_DashWithSword), switchToIdle);
dash.AddTrigger(trigger);
// attack abilities
float expireTime = 0.3f;
// sword normal attack
- ConditionAnimAtEnd condAttk1AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack1);
+ ConditionMotionAtEnd condAttk1AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack1);
trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2);
attk1.AddTrigger(trigger);
ConditionAttkExpireTime condAttk1ExpireTime = new ConditionAttkExpireTime(attk1, expireTime);
@@ -175,13 +188,13 @@ public partial class SaionjiScript : MonoBehaviour
trigger = new Trigger(condIsHit, new ActionLog("hit!!!"));
attk1.AddLateTrigger(trigger);
- //ConditionAnimRange condAttkRushGhostRange = new ConditionAnimRange(animator, 0f, 0.8f);
+ //ConditionMotionRange condAttkRushGhostRange = new ConditionMotionRange(animator, 0f, 0.8f);
//trigger = new Trigger(condAttkRushGhostRange, enableGhost, false);
//attkRush.AddTrigger(trigger);
- //ConditionAnimRange condAttkRushGhostDisableRange = new ConditionAnimRange(animator, 0.8f, 10f);
+ //ConditionMotionRange condAttkRushGhostDisableRange = new ConditionMotionRange(animator, 0.8f, 10f);
//trigger = new Trigger(condAttkRushGhostDisableRange, disableGhost, false);
//attkRush.AddTrigger(trigger);
- ConditionAnimRange condAttkRushAtRange = new ConditionAnimRange(animator, 0.5f, 1f);
+ ConditionMotionRange condAttkRushAtRange = new ConditionMotionRange(animator, 0.5f, 1f);
trigger = new Trigger(And(condAttkRushAtRange, condCircleCmd), switchToAttk2);
attkRush.AddTrigger(trigger);
//trigger = new Trigger(And(And(condAttkRushAtRange, condTowardRight), condRightCmd), switchToAttkRush);
@@ -194,7 +207,7 @@ public partial class SaionjiScript : MonoBehaviour
//attkRush.AddTrigger(triggerTurnRight);
//attkRush.AddTrigger(triggerTurnLeft);
- ConditionAnimAtEnd condAttk2AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack2);
+ ConditionMotionAtEnd condAttk2AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack2);
trigger = new Trigger(And(condAttk2AtEnd, condCircleCmd), switchToAttk3);
attk2.AddTrigger(trigger);
ConditionAttkExpireTime condAttk2ExpireTime = new ConditionAttkExpireTime(attk2, expireTime);
@@ -203,7 +216,7 @@ public partial class SaionjiScript : MonoBehaviour
attk2.AddTrigger(triggerTurnRight);
attk2.AddTrigger(triggerTurnLeft);
- ConditionAnimAtEnd condAttk3AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack3);
+ ConditionMotionAtEnd condAttk3AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack3);
trigger = new Trigger(And(condAttk3AtEnd, condCircleCmd), switchToAttk4);
attk3.AddTrigger(trigger);
ConditionAttkExpireTime condAttk3ExpireTime = new ConditionAttkExpireTime(attk3, expireTime);
@@ -212,7 +225,7 @@ public partial class SaionjiScript : MonoBehaviour
attk3.AddTrigger(triggerTurnRight);
attk3.AddTrigger(triggerTurnLeft);
- ConditionAnimAtEnd condAttk4AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack4);
+ ConditionMotionAtEnd condAttk4AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack4);
trigger = new Trigger(And(condAttk4AtEnd, condCircleCmd), switchToAttk5);
attk4.AddTrigger(trigger);
ConditionAttkExpireTime condAttk4ExpireTime = new ConditionAttkExpireTime(attk4, expireTime);
@@ -221,7 +234,7 @@ public partial class SaionjiScript : MonoBehaviour
attk4.AddTrigger(triggerTurnRight);
attk4.AddTrigger(triggerTurnLeft);
- ConditionAnimAtEnd condAttk5AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack5);
+ ConditionMotionAtEnd condAttk5AtEnd = new ConditionMotionAtEnd(animator, Anim_LightAttack5);
trigger = new Trigger(condAttk5AtEnd, switchToIdle);
attk5.AddTrigger(trigger);
ConditionAttkExpireTime condAttk5ExpireTime = new ConditionAttkExpireTime(attk5, expireTime);
@@ -231,6 +244,9 @@ public partial class SaionjiScript : MonoBehaviour
attk5.AddTrigger(triggerTurnLeft);
// side kick normal
+ ConditionMotionAtEnd condKickMotionEnd = new ConditionMotionAtEnd(animator, Anim_SideKick);
+ trigger = new Trigger(condKickMotionEnd, new ActionSetVelocity(m_Body, Vector3.zero), TriggerOnlyOnce.On, TriggerSwallow.Off);
+ sideKick.AddTrigger(trigger);
ConditionAttkExpireTime condSideKickExpireTime = new ConditionAttkExpireTime(sideKick, expireTime);
trigger = new Trigger(condSideKickExpireTime, switchToIdle);
sideKick.AddTrigger(trigger);
@@ -239,10 +255,10 @@ public partial class SaionjiScript : MonoBehaviour
ConditionAttkExpireTime condSideKickRushExpireTime = new ConditionAttkExpireTime(sideKickRush, expireTime);
trigger = new Trigger(condSideKickRushExpireTime, switchToIdle);
sideKickRush.AddTrigger(trigger);
- ConditionAnimRange condSideKickRushAnimRange = new ConditionAnimRange(animator, 0.5f, 10f);
- trigger = new Trigger(And(condSideKickRushAnimRange, And(condRightButtonHold, condCircleCmd)), new List<ActionBase> { towardRight, switchToAttkRush });
+ ConditionMotionRange condSideKickRushMotionRange = new ConditionMotionRange(animator, 0.5f, 10f);
+ trigger = new Trigger(And(condSideKickRushMotionRange, And(condRightButtonHold, condCircleCmd)), new List<ActionBase> { towardRight, switchToAttkRush });
sideKickRush.AddTrigger(trigger);
- trigger = new Trigger(And(condSideKickRushAnimRange, And(condLeftButtonHold, condCircleCmd)), new List<ActionBase> { towardLeft, switchToAttkRush });
+ trigger = new Trigger(And(condSideKickRushMotionRange, And(condLeftButtonHold, condCircleCmd)), new List<ActionBase> { towardLeft, switchToAttkRush });
sideKickRush.AddTrigger(trigger);
// super kick combo
@@ -251,21 +267,21 @@ public partial class SaionjiScript : MonoBehaviour
superKick.AddTrigger(trigger);
// gun normal
- ConditionAnimAtEnd condGun1AtEnd = new ConditionAnimAtEnd(animator, Anim_Gun1);
+ ConditionMotionAtEnd condGun1AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun1);
trigger = new Trigger(And(condGun1AtEnd, condSquareCmd), switchToGun2);
gun1.AddTrigger(trigger);
ConditionAttkExpireTime condGun1ExpireTime = new ConditionAttkExpireTime(gun1, expireTime);
trigger = new Trigger(condGun1ExpireTime, switchToIdle);
gun1.AddTrigger(trigger);
- ConditionAnimAtEnd condGun2AtEnd = new ConditionAnimAtEnd(animator, Anim_Gun2);
+ ConditionMotionAtEnd condGun2AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun2);
trigger = new Trigger(And(condGun2AtEnd, condSquareCmd), switchToGun3);
gun2.AddTrigger(trigger);
ConditionAttkExpireTime condGun2ExpireTime = new ConditionAttkExpireTime(gun2, expireTime);
trigger = new Trigger(condGun2ExpireTime, switchToIdle);
gun2.AddTrigger(trigger);
- ConditionAnimAtEnd condGun3AtEnd = new ConditionAnimAtEnd(animator, Anim_Gun3);
+ ConditionMotionAtEnd condGun3AtEnd = new ConditionMotionAtEnd(animator, Anim_Gun3);
trigger = new Trigger(And(condGun3AtEnd, condSquareCmd), switchToGun4);
gun3.AddTrigger(trigger);
ConditionAttkExpireTime condGun3ExpireTime = new ConditionAttkExpireTime(gun3, expireTime);
@@ -275,10 +291,10 @@ public partial class SaionjiScript : MonoBehaviour
ConditionAttkExpireTime condGun4ExpireTime = new ConditionAttkExpireTime(gun4, expireTime);
trigger = new Trigger(condGun4ExpireTime, switchToIdle);
gun4.AddTrigger(trigger);
- ConditionAnimRange condGun4AnimRange = new ConditionAnimRange(animator, 0.6f, 1f);
- trigger = new Trigger(And(condGun4AnimRange, condRight2Cmd), new List<ActionBase> { switchToDash, towardRight });
+ ConditionMotionRange condGun4MotionRange = new ConditionMotionRange(animator, 0.6f, 1f);
+ trigger = new Trigger(And(condGun4MotionRange, condRight2Cmd), new List<ActionBase> { switchToDash, towardRight });
gun4.AddTrigger(trigger);
- trigger = new Trigger(And(condGun4AnimRange, condLeft2Cmd), new List<ActionBase> { switchToDash, towardLeft });
+ trigger = new Trigger(And(condGun4MotionRange, condLeft2Cmd), new List<ActionBase> { switchToDash, towardLeft });
gun4.AddTrigger(trigger);
m_AbilitySystem.ForceStart(idle);
diff --git a/Assets/Scripts/Test/SaionjiScript_Physics.cs b/Assets/Scripts/Test/SaionjiScript_Physics.cs
index 87794998..99926afe 100644
--- a/Assets/Scripts/Test/SaionjiScript_Physics.cs
+++ b/Assets/Scripts/Test/SaionjiScript_Physics.cs
@@ -4,8 +4,9 @@ using UnityEngine;
public partial class SaionjiScript : MonoBehaviour, IInteractable
{
- public PhysicsBox m_Hitbox;
- public PhysicsBox m_Hurtbox;
+ public PhysicsBox[] m_Hitbox;
+ public PhysicsBox[] m_Hurtbox;
+ public PhysicsBody m_Body;
public PhysicsPrimitive[] GetAllPrimitive()
{
@@ -29,13 +30,25 @@ public partial class SaionjiScript : MonoBehaviour, IInteractable
public bool IsHit()
{
- bool isHit = PhysicsWorld.Instance.HasCollision(m_Hitbox);
- return isHit;
+ for(int i = 0;i < m_Hitbox.Length; ++i)
+ {
+ if(PhysicsWorld.Instance.HasCollision(m_Hitbox[i]))
+ {
+ return true;
+ }
+ }
+ return false;
}
public bool IsHurt()
{
- bool isHurt = PhysicsWorld.Instance.HasCollision(m_Hurtbox);
- return isHurt;
+ for (int i = 0; i < m_Hitbox.Length; ++i)
+ {
+ if (PhysicsWorld.Instance.HasCollision(m_Hurtbox[i]))
+ {
+ return true;
+ }
+ }
+ return false;
}
}