summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit/Components
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Unit/Components')
-rw-r--r--Assets/Scripts/Unit/Components/UnitAnimation/MonsterAnimation.cs6
-rw-r--r--Assets/Scripts/Unit/Components/UnitState/MonsterState.cs41
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();