summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Avatar/Abilities
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Avatar/Abilities')
-rw-r--r--Assets/Scripts/Avatar/Abilities/AbilityBase.cs6
-rw-r--r--Assets/Scripts/Avatar/Abilities/AttackAbility.cs65
-rw-r--r--Assets/Scripts/Avatar/Abilities/JumpAbility.cs4
-rw-r--r--Assets/Scripts/Avatar/Abilities/UberAbility.cs2
4 files changed, 38 insertions, 39 deletions
diff --git a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs
index 28f0e8d6..c8c09a6b 100644
--- a/Assets/Scripts/Avatar/Abilities/AbilityBase.cs
+++ b/Assets/Scripts/Avatar/Abilities/AbilityBase.cs
@@ -41,7 +41,7 @@ public abstract class AbilityBase
/// <summary>
/// 在物理模拟之后更新
/// </summary>
- public virtual void OnLateUpdate() { }
+ public virtual void OnPhysicsUpdate() { }
/// <summary>
/// 过渡到下一个ability的回调
@@ -52,12 +52,12 @@ public abstract class AbilityBase
/// <summary>
/// 检测到hitbox碰撞时的回调
/// </summary>
- public virtual void OnHit(PhysicsCollisionInfo info) { }
+ public virtual void OnHit(HitInfo info) { }
/// <summary>
/// 检测到hurtbox碰撞时的回调
/// </summary>
- public virtual void OnHurt(PhysicsCollisionInfo info) { }
+ public virtual void OnHurt(HurtInfo info) { }
/// <summary>
/// 检测到defendbox碰撞时的回调
diff --git a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
index 5a200cf8..6e7c503f 100644
--- a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
@@ -17,12 +17,12 @@ public class AttackAbility : AbilityBase
private List<Trigger> m_Triggers = new List<Trigger>();
- private List<Trigger> m_LateTriggers = new List<Trigger>();
+ private List<Trigger> m_PhysicsTriggers = new List<Trigger>();
/// <summary>
- /// 这个招式产生的hit
+ /// 这个招式配置的hit
/// </summary>
- private List<HitInfo> m_HitInfo = new List<HitInfo>();
+ private List<Hit> m_Hits = new List<Hit>();
/// <summary>
/// 从动画结束开始计时
@@ -43,7 +43,7 @@ public class AttackAbility : AbilityBase
{
get
{
- return m_HitInfo != null ? m_HitInfo.Count : 0;
+ return m_Hits != null ? m_Hits.Count : 0;
}
}
@@ -81,7 +81,7 @@ public class AttackAbility : AbilityBase
m_Config.body.LocalVelocity = m_Config.velocity;
}
- foreach(var hit in m_HitInfo)
+ foreach(var hit in m_Hits)
{
hit.WipeRecords();
}
@@ -97,30 +97,11 @@ public class AttackAbility : AbilityBase
m_TimeCount = 0;
}
- public override void OnHit(PhysicsCollisionInfo info)
+ public override void OnHit(HitInfo 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.SetLocalForce(new Vector3(-1000, 5000, 0));
- if(avatar is ArmorSoldierScript)
- {
- ArmorSoldierScript solider = avatar as ArmorSoldierScript;
- solider.Hurt();
- }
- }
- }
}
- public override void OnHurt(PhysicsCollisionInfo info)
+ public override void OnHurt(HurtInfo info)
{
}
@@ -143,9 +124,9 @@ public class AttackAbility : AbilityBase
}
// 在物理模拟之后
- public override void OnLateUpdate()
+ public override void OnPhysicsUpdate()
{
- foreach (var trigger in m_LateTriggers)
+ foreach (var trigger in m_PhysicsTriggers)
{
if (trigger.Update() && trigger.Swallow)
break;
@@ -159,18 +140,36 @@ public class AttackAbility : AbilityBase
m_Triggers.Add(trigger);
}
- public void AddLateTrigger(Trigger trigger)
+ public void AddPhysicsTrigger(Trigger trigger)
{
- if (trigger == null || m_LateTriggers.Contains(trigger))
+ if (trigger == null || m_PhysicsTriggers.Contains(trigger))
return;
- m_LateTriggers.Add(trigger);
+ m_PhysicsTriggers.Add(trigger);
}
public void AddHitDefination(HitDefination defination)
{
- HitInfo info = new HitInfo();
+ Hit info = new Hit();
info.defination = defination;
- m_HitInfo.Add(info);
+ m_Hits.Add(info);
+ }
+
+ // 获得当前时间点产生的hit
+ public Hit GetHit()
+ {
+ AnimatorStateInfo info = m_Config.animator.GetCurrentAnimatorStateInfo(0);
+ float normalizeTime = info.normalizedTime;
+ for (int i = 0; i< m_Hits.Count; ++i)
+ {
+ Hit hit = m_Hits[i];
+ float start = hit.defination.start;
+ float end = hit.defination.end;
+ if(normalizeTime >= start && normalizeTime <= end)
+ {
+ return hit;
+ }
+ }
+ return null;
}
}
diff --git a/Assets/Scripts/Avatar/Abilities/JumpAbility.cs b/Assets/Scripts/Avatar/Abilities/JumpAbility.cs
index b83e8cfb..5c2d6366 100644
--- a/Assets/Scripts/Avatar/Abilities/JumpAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/JumpAbility.cs
@@ -208,9 +208,9 @@ public class JumpAbility : AbilityBase
}
}
- public override void OnLateUpdate()
+ public override void OnPhysicsUpdate()
{
- base.OnLateUpdate();
+ base.OnPhysicsUpdate();
}
/// <summary>
diff --git a/Assets/Scripts/Avatar/Abilities/UberAbility.cs b/Assets/Scripts/Avatar/Abilities/UberAbility.cs
index 0a5bb8c5..ca2e7c06 100644
--- a/Assets/Scripts/Avatar/Abilities/UberAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/UberAbility.cs
@@ -7,6 +7,6 @@ public abstract class UberAbility : AbilityBase
{
public abstract void OnUpdate();
- public abstract void OnLateUpdate();
+ public abstract void OnPhysicsUpdate();
}