summaryrefslogtreecommitdiff
path: root/Assets/Scripts/AbilitySystem/Abilities
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-24 17:30:07 +0800
committerchai <chaifix@163.com>2020-10-24 17:30:07 +0800
commit65ed53a40f990e895305ff17a5e48e3cd6b8785b (patch)
tree3333c6a9b19fa5602fd8827e582273f602452bec /Assets/Scripts/AbilitySystem/Abilities
parent56a9b3bf4edc56e9c1dd502a469a7a0167751215 (diff)
*物理系统
Diffstat (limited to 'Assets/Scripts/AbilitySystem/Abilities')
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/AbilityBase.cs5
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs19
2 files changed, 24 insertions, 0 deletions
diff --git a/Assets/Scripts/AbilitySystem/Abilities/AbilityBase.cs b/Assets/Scripts/AbilitySystem/Abilities/AbilityBase.cs
index 330850e2..8b1a5549 100644
--- a/Assets/Scripts/AbilitySystem/Abilities/AbilityBase.cs
+++ b/Assets/Scripts/AbilitySystem/Abilities/AbilityBase.cs
@@ -38,6 +38,11 @@ public abstract class AbilityBase
/// </summary>
public virtual void OnUpdate() { }
+ /// <summary>
+ /// 在物理模拟之后更新
+ /// </summary>
+ public virtual void OnLateUpdate() { }
+
/// <summary>
/// 过渡到下一个ability的回调
/// </summary>
diff --git a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
index 9798d7a2..fc4ce7e1 100644
--- a/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
+++ b/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
@@ -13,6 +13,8 @@ public class AttackAbility : AbilityBase
/// </summary>
private List<Trigger> m_Triggers = new List<Trigger>();
+ private List<Trigger> m_LateTriggers = new List<Trigger>();
+
/// <summary>
/// 从动画结束开始计时
/// </summary>
@@ -79,6 +81,16 @@ public class AttackAbility : AbilityBase
}
}
+ // 在物理模拟之后
+ public override void OnLateUpdate()
+ {
+ foreach (var trigger in m_LateTriggers)
+ {
+ if (trigger.Update() && trigger.Swallow)
+ break;
+ }
+ }
+
public void AddTrigger(Trigger trigger)
{
if (trigger == null || m_Triggers.Contains(trigger))
@@ -86,4 +98,11 @@ public class AttackAbility : AbilityBase
m_Triggers.Add(trigger);
}
+ public void AddLateTrigger(Trigger trigger)
+ {
+ if (trigger == null || m_LateTriggers.Contains(trigger))
+ return;
+ m_LateTriggers.Add(trigger);
+ }
+
}