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/AttackAbility.cs | 35 ++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'Assets/Scripts/Avatar/Abilities/AttackAbility.cs') 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); + } + } -- cgit v1.1-26-g67d0