LAPTOP-OM1V99U2\永远de小亡灵 1 年之前
父節點
當前提交
9ce9b2fa5b

+ 213 - 1
ActionTowerDefense/Assets/Resources/Spine/Spirits_Assassin/Spirits_Assassin_Controller.controller

@@ -112,6 +112,83 @@ AnimationClip:
   m_HasGenericRootTransform: 0
   m_HasMotionFloatCurves: 0
   m_Events: []
+--- !u!74 &-8137988357538945715
+AnimationClip:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: hitted
+  serializedVersion: 7
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: dummy
+    path: 
+    classID: 1
+    script: {fileID: 0}
+  m_PPtrCurves: []
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 1341452863
+      script: {fileID: 0}
+      typeID: 1
+      customType: 0
+      isPPtrCurve: 0
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 0
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves: []
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
 --- !u!74 &-7910697135924164218
 AnimationClip:
   m_ObjectHideFlags: 0
@@ -942,6 +1019,32 @@ AnimatorController:
     m_IKPass: 0
     m_SyncedLayerAffectsTiming: 0
     m_Controller: {fileID: 9100000}
+--- !u!1102 &262598410210756188
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: weak
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions: []
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: -3913379151948502196}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1102 &307476082479152366
 AnimatorState:
   serializedVersion: 6
@@ -1166,6 +1269,32 @@ AnimationClip:
   m_HasGenericRootTransform: 0
   m_HasMotionFloatCurves: 0
   m_Events: []
+--- !u!1102 &3290836151697850913
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: weak 0
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions: []
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 5298490289517481672}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1107 &3747339540074244288
 AnimatorStateMachine:
   serializedVersion: 6
@@ -1216,7 +1345,13 @@ AnimatorStateMachine:
     m_Position: {x: 0, y: 0, z: 0}
   - serializedVersion: 1
     m_State: {fileID: 9220789475148955431}
-    m_Position: {x: 620, y: 210, z: 0}
+    m_Position: {x: 590, y: 150, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 262598410210756188}
+    m_Position: {x: 600, y: 200, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 3290836151697850913}
+    m_Position: {x: 0, y: 0, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -1339,6 +1474,83 @@ AnimationClip:
   m_HasGenericRootTransform: 0
   m_HasMotionFloatCurves: 0
   m_Events: []
+--- !u!74 &5298490289517481672
+AnimationClip:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: hitted
+  serializedVersion: 7
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 0
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: dummy
+    path: 
+    classID: 1
+    script: {fileID: 0}
+  m_PPtrCurves: []
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 1341452863
+      script: {fileID: 0}
+      typeID: 1
+      customType: 0
+      isPPtrCurve: 0
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 0
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves: []
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
 --- !u!1102 &5722392888464085076
 AnimatorState:
   serializedVersion: 6

+ 64 - 36
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -428,42 +428,46 @@ public class Enemy : MoveCharacter
             case CharacterState.Coma:
                 break;
             case CharacterState.FindPlayer:
-                if (!foot.TrigGround && !canFly)
+                if (!isFindPlayer)
                 {
-                    if (rb.velocity.y > 0)
+                    if (!foot.TrigGround && !canFly)
                     {
-                        ChangeState(CharacterState.Rise);
-                        break;
+                        if (rb.velocity.y > 0)
+                        {
+                            ChangeState(CharacterState.Rise);
+                            break;
+                        }
+                        else
+                        {
+                            ChangeState(CharacterState.Fall);
+                            break;
+                        }
                     }
-                    else
+                    if (Vector3.Distance(transform.position, targetCharacter.transform.position)
+                        < hateDistance)
                     {
-                        ChangeState(CharacterState.Fall);
+                        rushEndPos = targetCharacter.transform.position;
+                        isFindPlayer = true;
                         break;
                     }
-                }
-                if (Vector3.Distance(transform.position, targetCharacter.transform.position)
-                    < hateDistance)
-                {
-                    rushEndPos = targetCharacter.transform.position;
-                    isFindPlayer = true;
-                    break;
-                }
-                if (targetCharacter.transform.position.x > transform.position.x)
-                {
-                    rb.velocity = Vector3.right * moveSpeed;
-                    if (bodyTrans.localScale.x > 0)
+                    if (targetCharacter.transform.position.x > transform.position.x)
                     {
-                        Turn();
+                        rb.velocity = Vector3.right * moveSpeed;
+                        if (bodyTrans.localScale.x > 0)
+                        {
+                            Turn();
+                        }
                     }
-                }
-                if (targetCharacter.transform.position.x < transform.position.x)
-                {
-                    rb.velocity = Vector3.left * moveSpeed;
-                    if (bodyTrans.localScale.x < 0)
+                    if (targetCharacter.transform.position.x < transform.position.x)
                     {
-                        Turn();
+                        rb.velocity = Vector3.left * moveSpeed;
+                        if (bodyTrans.localScale.x < 0)
+                        {
+                            Turn();
+                        }
                     }
                 }
+
                 break;
             case CharacterState.ReadyToRush:
                 time += Time.deltaTime;
@@ -631,11 +635,22 @@ public class Enemy : MoveCharacter
                 //animalAni.SetInteger("state", (int)PlayerState.Fall);
                 break;
             case CharacterState.Hurt:
-                ani.Play("hitted", 0, 0);
-                aniCollider.Play("Hurt", 0, 0);
-                invincibleTime = totalInvincibleTime;
-                hurtKeepTime = minHurtKeepTime;
-                //ani.Play("Invincible", 2, 0);
+                switch (oldState)
+                {
+                    case CharacterState.ReadyToRush:
+                    case CharacterState.RushAttack:
+                    case CharacterState.ReadyToDownRush:
+                    case CharacterState.DownRush:
+                        state = oldState;
+                        beRepelValue = totalBeRepelValue;
+                        break;
+                    default:
+                        ani.Play("hitted", 0, 0);
+                        aniCollider.Play("Hurt", 0, 0);
+                        invincibleTime = totalInvincibleTime;
+                        hurtKeepTime = minHurtKeepTime;
+                        break;
+                }
                 break;
             case CharacterState.Coma:
                 ani.Play("Coma", 0, 0);
@@ -655,12 +670,25 @@ public class Enemy : MoveCharacter
                 }
                 break;
             case CharacterState.Weak:
-                aniCollider.Play("Weak", 0, 0);
-                ani.Play("weak", 0, 0);
-                Vector3 velocity = rb.velocity;
-                velocity.y = weakUpSpeed;
-                rb.velocity = velocity;
-                weakTime = totalWeakTime;
+                switch (oldState)
+                {
+                    case CharacterState.ReadyToRush:
+                    case CharacterState.RushAttack:
+                    case CharacterState.ReadyToDownRush:
+                    case CharacterState.DownRush:
+                        state = oldState;
+                        beRepelValue = totalBeRepelValue;
+                        break;
+                    default:
+                        aniCollider.Play("Weak", 0, 0);
+                        ani.Play("weak", 0, 0);
+                        Vector3 velocity = rb.velocity;
+                        velocity.y = weakUpSpeed;
+                        rb.velocity = velocity;
+                        weakTime = totalWeakTime;
+                        break;
+                }
+
                 break;
             case CharacterState.FindPlayer:
                 isFindPlayer = false;

+ 13 - 8
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_Assassin.cs

@@ -22,9 +22,16 @@ public class ESpirits_Assassin : MonoBehaviour
         {
             OnState();
         }
-        if(enemy.state == CharacterState.Die)
+        switch (enemy.state)
         {
-            this.enabled = false;
+            case CharacterState.Die:
+                this.enabled = false;
+                break;
+            case CharacterState.FinishRush:
+                state = AssassinState.Normal;
+                break;
+            default:
+                break;
         }
     }
     public void OnState()
@@ -41,18 +48,16 @@ public class ESpirits_Assassin : MonoBehaviour
                 }
                 break;
             case AssassinState.FindPlayer:
+                if(enemy.state  == CharacterState.Idle)
+                {
+                    enemy.ChangeState(CharacterState.FindPlayer);
+                }
                 if (enemy.isFindPlayer)
                 {
                     enemy.ChangeState(CharacterState.ReadyToRush);
                     state = AssassinState.Rushing;
                 }
                 break;
-            case AssassinState.Rushing:
-                if(enemy.state == CharacterState.FinishRush)
-                {
-                    state = AssassinState.Normal;
-                }
-                break;
             default:
                 break;
         }