summaryrefslogtreecommitdiff
path: root/Assets/Scripts/AbilitySystem
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/AbilitySystem')
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs4
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs4
-rw-r--r--Assets/Scripts/AbilitySystem/AbilitySystem.cs5
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs23
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs.meta (renamed from Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionBase.cs27
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs14
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs.meta (renamed from Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs.meta)2
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs (renamed from Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs.meta (renamed from Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs25
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs (renamed from Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs)2
-rw-r--r--Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs2
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs18
-rw-r--r--Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta11
-rw-r--r--Assets/Scripts/AbilitySystem/Trigger.cs37
-rw-r--r--Assets/Scripts/AbilitySystem/Trigger.cs.meta (renamed from Assets/Scripts/AbilitySystem/Triggers/Trigger.cs.meta)0
-rw-r--r--Assets/Scripts/AbilitySystem/Triggers.meta8
-rw-r--r--Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs28
-rw-r--r--Assets/Scripts/AbilitySystem/Triggers/Trigger.cs32
25 files changed, 213 insertions, 98 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs
index 435edb93..4b9cd21e 100644
--- a/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs
+++ b/Assets/Scripts/AbilitySystem/Abilities/IdleAbility.cs
@@ -13,7 +13,7 @@ public class IdleAbility : AbilityBase
/// <summary>
/// 在Idle状态时可以切换的ability
/// </summary>
- private List<AbilityTrigger> m_AbilityTriggers;
+ private List<Trigger> m_Triggers;
public IdleAbility(int animation)
: base()
@@ -33,7 +33,7 @@ public class IdleAbility : AbilityBase
public override void OnUpdate()
{
- foreach(var trigger in m_AbilityTriggers)
+ foreach(var trigger in m_Triggers)
{
if (trigger.Update())
break;
diff --git a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs
index a2057900..2c39afd5 100644
--- a/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs
+++ b/Assets/Scripts/AbilitySystem/Abilities/MoveAbility.cs
@@ -8,7 +8,7 @@ public class MoveAbility : AbilityBase
/// <summary>
/// 在跑动状态时可以切换的ability
/// </summary>
- private List<AbilityTrigger> m_AbilityTriggers;
+ private List<Trigger> m_Triggers;
public override void OnInit()
{
@@ -45,7 +45,7 @@ public class MoveAbility : AbilityBase
public override void OnUpdate()
{
- foreach (var abilityTrigger in m_AbilityTriggers)
+ foreach (var abilityTrigger in m_Triggers)
{
if (abilityTrigger.Update())
break;
diff --git a/Assets/Scripts/AbilitySystem/AbilitySystem.cs b/Assets/Scripts/AbilitySystem/AbilitySystem.cs
index ce4ff49e..890c1b4b 100644
--- a/Assets/Scripts/AbilitySystem/AbilitySystem.cs
+++ b/Assets/Scripts/AbilitySystem/AbilitySystem.cs
@@ -26,7 +26,12 @@ public class AbilitySystem
{
if (ability == null)
return;
+
+ if (m_Currrent != null)
+ m_Currrent.OnExit();
+
ability.OnEnter();
+ m_Currrent = ability;
}
public void AddAbility(AbilityBase ability)
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs
new file mode 100644
index 00000000..6f2252d7
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs
@@ -0,0 +1,23 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionAnimCrossFade : ActionBase
+{
+ Animator m_Animator;
+ int m_TargetAnimation;
+ float m_Duration;
+
+ public ActionAnimCrossFade(Animator animator, int toAnim, float duration = 0)
+ {
+ m_Animator = animator;
+ m_TargetAnimation = toAnim;
+ m_Duration = duration;
+ }
+
+ public override void Execute()
+ {
+ m_Animator.CrossFade(m_TargetAnimation, m_Duration);
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs.meta
index 6eed1575..6eed1575 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionAnimCrossFade.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs b/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs
index f3d67fff..1458e340 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionBase.cs
@@ -2,17 +2,22 @@
using System.Collections.Generic;
using UnityEngine;
-public class ActionBase : MonoBehaviour
+public abstract class ActionBase
{
- // Start is called before the first frame update
- void Start()
- {
-
- }
+ private int m_ID;
+ public int ID
+ {
+ get
+ {
+ return m_ID;
+ }
+ }
+
+ protected ActionBase()
+ {
+ m_ID = UIDManager.Acquire();
+ }
+
+ public abstract void Execute();
- // Update is called once per frame
- void Update()
- {
-
- }
}
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs
new file mode 100644
index 00000000..c411c3fa
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 创建角色残影
+/// </summary>
+public class ActionFlashEffect : ActionBase
+{
+ public override void Execute()
+ {
+
+ }
+}
diff --git a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs.meta
index 826e50cf..ea99c96b 100644
--- a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionFlashEffect.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: e69d951b4141e5646984e501aae2cbff
+guid: 9a193a2045f759e4abaff6bfef12658f
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs
index 7f26f35a..7f26f35a 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs.meta
index eb9fe77a..eb9fe77a 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionFreze.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionFreeze.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs
index 73319e9e..442ce999 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySfx.cs
@@ -2,17 +2,18 @@
using System.Collections.Generic;
using UnityEngine;
-public class ActionPlaySfx : MonoBehaviour
+public class ActionPlaySfx : ActionBase
{
- // Start is called before the first frame update
- void Start()
- {
-
- }
+ GameObject m_Sfx;
+ Vector3 m_TargetPos;
- // Update is called once per frame
- void Update()
- {
-
- }
-}
+ public ActionPlaySfx(GameObject sfx, Vector3 position)
+ {
+ m_Sfx = sfx;
+ m_TargetPos = position;
+ }
+
+ public override void Execute()
+ {
+ }
+} \ No newline at end of file
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs
index 57b1bd2b..237b7455 100644
--- a/Assets/Scripts/AbilitySystem/Actions/ActionCrossFade.cs
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using UnityEngine;
-public class ActionCrossFade : MonoBehaviour
+public class ActionPlaySound : MonoBehaviour
{
// Start is called before the first frame update
void Start()
diff --git a/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta
new file mode 100644
index 00000000..a9bbf014
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Actions/ActionPlaySound.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c43194c5e437d5d4fb02a7b0618a7b0e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs
new file mode 100644
index 00000000..282ef929
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ConditionAnimFrameRange : 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/ConditionAnimFrameRange.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta
new file mode 100644
index 00000000..3fc88fb1
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionAnimFrameRange.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 28e7aa2c7b5a9d74b936ec5731eeec36
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
index c047b50c..80bae491 100644
--- a/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionInair.cs
@@ -5,7 +5,7 @@ using UnityEngine;
/// <summary>
/// 某个角色是否浮空
/// </summary>
-public class ConditionInair : ConditionBase
+public class ConditionInAir : ConditionBase
{
public override bool Evaluate()
{
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs
new file mode 100644
index 00000000..8db94951
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ConditionNotHit : 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/ConditionNotHit.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta
new file mode 100644
index 00000000..7058713f
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHit.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b0d86b3d8867b144f90fcedf4a6351c3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs
new file mode 100644
index 00000000..9604677a
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ConditionNotHurt : 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/ConditionNotHurt.cs.meta b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta
new file mode 100644
index 00000000..bbe77240
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Conditions/ConditionNotHurt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ab089a23fff18a647856f2e33a145784
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Trigger.cs b/Assets/Scripts/AbilitySystem/Trigger.cs
new file mode 100644
index 00000000..b7b4751c
--- /dev/null
+++ b/Assets/Scripts/AbilitySystem/Trigger.cs
@@ -0,0 +1,37 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 不同效果的trigger继承这个基类
+/// </summary>
+
+public sealed class Trigger
+{
+ private ConditionBase m_Condition;
+ private List<ActionBase> m_ActionChain;
+
+ public Trigger(ConditionBase condition, List<ActionBase> actions)
+ {
+ m_Condition = condition;
+ m_ActionChain.AddRange(actions);
+ }
+
+ /// <summary>
+ /// 如果触发执行了,返回true,否则返回false
+ /// </summary>
+ /// <returns></returns>
+ public bool Update()
+ {
+ if (m_Condition.Evaluate())
+ {
+ foreach(var action in m_ActionChain)
+ {
+ action.Execute();
+ }
+ return true;
+ }
+ return false;
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs.meta b/Assets/Scripts/AbilitySystem/Trigger.cs.meta
index 91d7d1b8..91d7d1b8 100644
--- a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs.meta
+++ b/Assets/Scripts/AbilitySystem/Trigger.cs.meta
diff --git a/Assets/Scripts/AbilitySystem/Triggers.meta b/Assets/Scripts/AbilitySystem/Triggers.meta
deleted file mode 100644
index e21c195a..00000000
--- a/Assets/Scripts/AbilitySystem/Triggers.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 12ea28314544c614e915aa9b791d8611
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs b/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs
deleted file mode 100644
index ab325866..00000000
--- a/Assets/Scripts/AbilitySystem/Triggers/AbilityTrigger.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 在ability的某一帧切换到某个ability的trigger
-/// </summary>
-public class AbilityTrigger : Trigger
-{
- AbilityBase m_TargetAbility;
-
- public AbilityTrigger(ConditionBase condition, AbilityBase target)
- : base(condition)
- {
- m_TargetAbility = target;
- }
-
- public override bool Update()
- {
- // 如果满足条件,切换到下一个ability
- if (IsFulfilled())
- {
- return true;
- }
- return base.Update();
- }
-
-}
diff --git a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs b/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs
deleted file mode 100644
index 178932fd..00000000
--- a/Assets/Scripts/AbilitySystem/Triggers/Trigger.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-/// <summary>
-/// 不同效果的trigger基础这个基类
-/// </summary>
-
-public abstract class Trigger
-{
- protected ConditionBase m_Condition;
-
- public Trigger(ConditionBase condition)
- {
- m_Condition = condition;
- }
-
- protected bool IsFulfilled()
- {
- return m_Condition.Evaluate();
- }
-
- /// <summary>
- /// 如果触发执行了,返回true,否则返回false
- /// </summary>
- /// <returns></returns>
- public virtual bool Update()
- {
- return false;
- }
-
-}