diff options
Diffstat (limited to 'Assets/Scripts/Avatar/Abilities/AttackAbility.cs')
-rw-r--r-- | Assets/Scripts/Avatar/Abilities/AttackAbility.cs | 35 |
1 files changed, 33 insertions, 2 deletions
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<Avatar>();
+ 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);
+ }
+
}
|