summaryrefslogtreecommitdiff
path: root/Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs')
-rw-r--r--Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs38
1 files changed, 28 insertions, 10 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;
}