diff options
Diffstat (limited to 'Assets/Scripts/Unit/Components')
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitState/MonsterState.cs | 41 |
2 files changed, 45 insertions, 2 deletions
diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs index 91583d34..ee111f73 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs @@ -21,6 +21,7 @@ public class MonsterAnimation : UnitAnimation HitLight, HitAir, + HitInAir, HitBackHeavy, Rise, @@ -93,6 +94,11 @@ public class MonsterAnimation : UnitAnimation //m_Animator.CrossFade("HitLight", 0.05f, 0, 0, 0); } + public void AnimHitInAir()
+ {
+ this.Play(EAnimState.HitInAir, 0, 0); + } + public void AnimHitBackHeavy()
{
this.Play(EAnimState.HitBackHeavy, 0, 0); diff --git a/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs b/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs index db68493b..c2a581b1 100644 --- a/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs +++ b/Assets/Scripts/Unit/Components/UnitState/MonsterState.cs @@ -16,6 +16,7 @@ public class MonsterState : UnitState HitLight, HitAir, + HitInAir,
HitGround, HitFall, KnockDown, @@ -80,6 +81,8 @@ public class MonsterState : UnitState public struct RiseParam { } + public struct HitInAirParam { } + #region Idle IEnumerator Idle(IdleParam param) @@ -149,12 +152,46 @@ public class MonsterState : UnitState void OnHitAirExit(EUnitState nextState) { + }
+
+ #endregion +
+ #region HitInAir +
+ IEnumerator HitInAir(HitInAirParam param) + { + ((MonsterController)owner).FaceToFacePC(); + m_Owner.monsterAnimation.AnimHitInAir(); + yield return null; + float vy = -1f; + float g = -15.8f; + while (true) + { + bool reachEnd = m_Owner.monsterAnimation.baseLayer.playbackNormalizedTime == 1; + if (reachEnd) + { + vy += g * Time.deltaTime; + Vector3 pos = owner.transform.position; + pos.y += vy * Time.deltaTime; + if(pos.y <= 0)
+ {
+ yield return new WaitForSeconds(0.5f);
+ ChangeState(EUnitState.Rise, new RiseParam());
+ } + owner.transform.position = pos; + } + yield return null; + } } + void OnHitInAirExit(EUnitState nextState) + { + }
+
#endregion - +
#region Rise - +
IEnumerator Rise(RiseParam param) { m_Owner.monsterAnimation.AnimRise(); |