From 3708d0a07ce43c3d98a0171eacfa9c370c873f96 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 2 Nov 2020 19:53:12 +0800 Subject: =?UTF-8?q?*=E5=8F=97=E5=87=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/Avatar/Abilities/AbilityBase.cs | 4 +-- Assets/Scripts/Avatar/Abilities/AttackAbility.cs | 35 ++++++++++++++++++++++-- Assets/Scripts/Avatar/Abilities/MoveAbility.cs | 8 ------ 3 files changed, 35 insertions(+), 12 deletions(-) (limited to 'Assets/Scripts/Avatar/Abilities') diff --git a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs index 8b1a5549..28f0e8d6 100644 --- a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs +++ b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs @@ -52,12 +52,12 @@ public abstract class AbilityBase /// /// 检测到hitbox碰撞时的回调 /// - public virtual void OnHit() { } + public virtual void OnHit(PhysicsCollisionInfo info) { } /// /// 检测到hurtbox碰撞时的回调 /// - public virtual void OnHurt() { } + public virtual void OnHurt(PhysicsCollisionInfo info) { } /// /// 检测到defendbox碰撞时的回调 diff --git a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs index 117dca7e..38c5d62f 100644 --- a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs +++ b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs @@ -80,6 +80,11 @@ public class AttackAbility : AbilityBase { m_Config.body.LocalVelocity = m_Config.velocity; } + + foreach(var hit in m_HitInfo) + { + hit.WipeRecords(); + } } public override void OnExit() @@ -87,11 +92,30 @@ public class AttackAbility : AbilityBase m_TimeCount = 0; } - public override void OnHit() + public override void OnHit(PhysicsCollisionInfo info) { + Avatar avatar = info.prim2.GetComponentInParent(); + if (avatar == null) + return; + for (int i = 0; i < m_HitInfo.Count; ++i) + { + HitInfo hitInfo = m_HitInfo[i]; + if(!hitInfo.HasRecord(avatar)) + { + hitInfo.AddRecord(avatar); + Debug.Log("hit " + avatar.Name); + PhysicsBody body = avatar.Body; + body.AddForce(new Vector3(3000, 0, 0)); + if(avatar is ArmorSoldierScript) + { + ArmorSoldierScript solider = avatar as ArmorSoldierScript; + solider.Hurt(); + } + } + } } - public override void OnHurt() + public override void OnHurt(PhysicsCollisionInfo info) { } @@ -137,4 +161,11 @@ public class AttackAbility : AbilityBase m_LateTriggers.Add(trigger); } + public void AddHitDefination(HitDefination defination) + { + HitInfo info = new HitInfo(); + info.defination = defination; + m_HitInfo.Add(info); + } + } diff --git a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs index 757cd2d1..cf9fa106 100644 --- a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs +++ b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs @@ -37,14 +37,6 @@ public class MoveAbility : AbilityBase { } - public override void OnHit() - { - } - - public override void OnHurt() - { - } - public override void OnTranslate(AbilityBase to) { } -- cgit v1.1-26-g67d0