From 3d3f0b7ede44569ecaab523350feede9fee383c3 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 26 Oct 2020 08:36:27 +0800 Subject: * ability system --- .../AbilitySystem/Abilities/AttackAbility.cs | 38 ++++++++++++++++------ 1 file changed, 28 insertions(+), 10 deletions(-) (limited to 'Assets/Scripts/AbilitySystem/Abilities/AttackAbility.cs') 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(); /// /// 在跑动状态时可以切换的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; } -- cgit v1.1-26-g67d0