Explorar el Código

加上击退值概念,击退值到0后进入Weak状态,再次攻击被打飞

wulifu hace 1 año
padre
commit
92e4dc54bb
Se han modificado 29 ficheros con 1080 adiciones y 16 borrados
  1. 29 0
      ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider.controller
  2. 233 0
      ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider_Weak.anim
  3. 8 0
      ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider_Weak.anim.meta
  4. 29 0
      ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider.controller
  5. 233 0
      ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider_Weak.anim
  6. 8 0
      ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider_Weak.anim.meta
  7. 29 0
      ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider.controller
  8. 233 0
      ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider_Weak.anim
  9. 8 0
      ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider_Weak.anim.meta
  10. 9 0
      ActionTowerDefense/Assets/Resources/Prefab/Demonic_Arrow.prefab
  11. 8 0
      ActionTowerDefense/Assets/Resources/Prefab/Demonic_Giant.prefab
  12. 8 0
      ActionTowerDefense/Assets/Resources/Prefab/Demonic_Sword.prefab
  13. 9 0
      ActionTowerDefense/Assets/Resources/Prefab/Enemy_Arrow.prefab
  14. 8 0
      ActionTowerDefense/Assets/Resources/Prefab/Enemy_Giant.prefab
  15. 8 0
      ActionTowerDefense/Assets/Resources/Prefab/Enemy_Sword.prefab
  16. 29 0
      ActionTowerDefense/Assets/Resources/Spine/demon_arrow/demon_arrow_Controller.controller
  17. 29 0
      ActionTowerDefense/Assets/Resources/Spine/demon_giant/demon_diant_Controller.controller
  18. 29 0
      ActionTowerDefense/Assets/Resources/Spine/demon_sword/demon_sword_Controller.controller
  19. 28 0
      ActionTowerDefense/Assets/Scenes/SampleScene.unity
  20. 2 1
      ActionTowerDefense/Assets/Scripts/AttackTrigger.cs
  21. 2 2
      ActionTowerDefense/Assets/Scripts/BeHitTrigger.cs
  22. 5 3
      ActionTowerDefense/Assets/Scripts/Bullet.cs
  23. 6 8
      ActionTowerDefense/Assets/Scripts/Character.cs
  24. 18 0
      ActionTowerDefense/Assets/Scripts/Demonic.cs
  25. 18 0
      ActionTowerDefense/Assets/Scripts/Enemy.cs
  26. 1 1
      ActionTowerDefense/Assets/Scripts/EnemyTower.cs
  27. 35 0
      ActionTowerDefense/Assets/Scripts/MoveCharacter.cs
  28. 17 0
      ActionTowerDefense/Assets/Scripts/PlayerController.cs
  29. 1 1
      ActionTowerDefense/Assets/Scripts/Tower.cs

+ 29 - 0
ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider.controller

@@ -79,6 +79,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: -1497076734867448091}
     m_Position: {x: 340, y: 120, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 4871923915307118932}
+    m_Position: {x: 570, y: 70, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -255,6 +258,32 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1102 &4871923915307118932
+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: 7400000, guid: 4575c14b0c013c9439e4206e8126f195, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1102 &5524836056086674188
 AnimatorState:
   serializedVersion: 6

+ 233 - 0
ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider_Weak.anim

@@ -0,0 +1,233 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: EnemyArrowCollider_Weak
+  serializedVersion: 6
+  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.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    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: 3066340498
+      attribute: 4197328169
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 2368279999
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 605858901
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 1394318531
+      script: {fileID: 0}
+      typeID: 65
+      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:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []

+ 8 - 0
ActionTowerDefense/Assets/Animations/Enemy_Arrow/EnemyArrowCollider_Weak.anim.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4575c14b0c013c9439e4206e8126f195
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 29 - 0
ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider.controller

@@ -79,6 +79,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: -1497076734867448091}
     m_Position: {x: 340, y: 120, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 4975296268368355014}
+    m_Position: {x: 570, y: 70, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -255,6 +258,32 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1102 &4975296268368355014
+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: 7400000, guid: 40d8737ca24ee594fae4e44962396cd2, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1102 &5524836056086674188
 AnimatorState:
   serializedVersion: 6

+ 233 - 0
ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider_Weak.anim

@@ -0,0 +1,233 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: EnemyGiantCollider_Weak
+  serializedVersion: 6
+  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.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    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: 3066340498
+      attribute: 4197328169
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 2368279999
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 605858901
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 1394318531
+      script: {fileID: 0}
+      typeID: 65
+      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:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []

+ 8 - 0
ActionTowerDefense/Assets/Animations/Enemy_Giant/EnemyGiantCollider_Weak.anim.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 40d8737ca24ee594fae4e44962396cd2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 29 - 0
ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider.controller

@@ -79,6 +79,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: -1497076734867448091}
     m_Position: {x: 340, y: 120, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 6811560103129488401}
+    m_Position: {x: 570, y: 70, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -281,6 +284,32 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1102 &6811560103129488401
+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: 7400000, guid: de492ce2f4cdc964590adc7e1c939660, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1102 &6942228468214946522
 AnimatorState:
   serializedVersion: 6

+ 233 - 0
ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider_Weak.anim

@@ -0,0 +1,233 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: EnemySwordCollider_Weak
+  serializedVersion: 6
+  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.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    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: 3066340498
+      attribute: 4197328169
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 2368279999
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 605858901
+      script: {fileID: 0}
+      typeID: 65
+      customType: 0
+      isPPtrCurve: 0
+    - serializedVersion: 2
+      path: 3066340498
+      attribute: 1394318531
+      script: {fileID: 0}
+      typeID: 65
+      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:
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.72
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1.584
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Size.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.x
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  - curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 0.792
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Center.y
+    path: BodyCollider
+    classID: 65
+    script: {fileID: 0}
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []

+ 8 - 0
ActionTowerDefense/Assets/Animations/Enemy_Sword/EnemySwordCollider_Weak.anim.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: de492ce2f4cdc964590adc7e1c939660
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 9 - 0
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Arrow.prefab

@@ -980,22 +980,26 @@ MonoBehaviour:
     force: 0
     changeHurt: 1
     hurtTime: 0.3
+    repelValue: 10
   - damage: 40
     attackDir: {x: -1, y: 0, z: 0}
     force: 0
     changeHurt: 1
     hurtTime: 0.3
+    repelValue: 10
   - damage: 80
     attackDir: {x: -1, y: 0, z: 0}
     force: 0
     changeHurt: 1
     hurtTime: 0.3
+    repelValue: 10
   attack2Infos:
   - damage: 40
     attackDir: {x: -1, y: 0, z: 0}
     force: 0
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers: []
   attackType: 1
   bulletPrefab: {fileID: 7473170563405908938, guid: 0460e8750cef0df4292f6d2bb56a4843, type: 3}
@@ -1018,6 +1022,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   costMp: 60
   searchState: 0

+ 8 - 0
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Giant.prefab

@@ -97,6 +97,7 @@ MonoBehaviour:
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   hurtTime: 0
+  repelValue: 0
 --- !u!1 &2460330936527559963
 GameObject:
   m_ObjectHideFlags: 0
@@ -445,12 +446,14 @@ MonoBehaviour:
     force: 1000
     changeHurt: 1
     hurtTime: 1
+    repelValue: 100
   attack2Infos:
   - damage: 110
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers:
   - {fileID: 7729941002223262554}
   attackType: 0
@@ -471,6 +474,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   costMp: 150
   searchState: 0

+ 8 - 0
ActionTowerDefense/Assets/Resources/Prefab/Demonic_Sword.prefab

@@ -186,12 +186,14 @@ MonoBehaviour:
     force: 50
     changeHurt: 1
     hurtTime: 0.5
+    repelValue: 30
   attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 50
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers:
   - {fileID: 4347565098670608659}
   attackType: 0
@@ -212,6 +214,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   costMp: 100
   searchState: 0
@@ -555,6 +562,7 @@ MonoBehaviour:
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   hurtTime: 0
+  repelValue: 0
 --- !u!1 &7669620205589286043
 GameObject:
   m_ObjectHideFlags: 0

+ 9 - 0
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Arrow.prefab

@@ -980,22 +980,26 @@ MonoBehaviour:
     force: 1000
     changeHurt: 1
     hurtTime: 0
+    repelValue: 0
   - damage: 10
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
     changeHurt: 1
     hurtTime: 0
+    repelValue: 0
   - damage: 10
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
     changeHurt: 1
     hurtTime: 0
+    repelValue: 0
   attack2Infos:
   - damage: 10
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers: []
   attackType: 1
   bulletPrefab: {fileID: 7473170563405908938, guid: 0460e8750cef0df4292f6d2bb56a4843, type: 3}
@@ -1018,6 +1022,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   jumpSpeed: 10
   searchState: 0

+ 8 - 0
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Giant.prefab

@@ -97,6 +97,7 @@ MonoBehaviour:
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   hurtTime: 0
+  repelValue: 0
 --- !u!1 &2460330936527559963
 GameObject:
   m_ObjectHideFlags: 0
@@ -445,12 +446,14 @@ MonoBehaviour:
     force: 1000
     changeHurt: 1
     hurtTime: 0
+    repelValue: 0
   attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 1000
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers:
   - {fileID: 7729941002223262554}
   attackType: 0
@@ -471,6 +474,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   jumpSpeed: 10
   searchState: 0

+ 8 - 0
ActionTowerDefense/Assets/Resources/Prefab/Enemy_Sword.prefab

@@ -171,6 +171,7 @@ MonoBehaviour:
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   hurtTime: 0
+  repelValue: 0
 --- !u!1 &2437299196472462361
 GameObject:
   m_ObjectHideFlags: 0
@@ -240,12 +241,14 @@ MonoBehaviour:
     force: 50
     changeHurt: 1
     hurtTime: 0
+    repelValue: 0
   attack2Infos:
   - damage: 30
     attackDir: {x: -1, y: 0, z: 0}
     force: 50
     changeHurt: 0
     hurtTime: 0
+    repelValue: 0
   attackTriggers:
   - {fileID: 2280520615464243483}
   attackType: 0
@@ -266,6 +269,11 @@ MonoBehaviour:
   extraRiseGravity: -28.8
   extraFallGravity: -14.4
   moveSpeed: 5
+  beRepelValue: 0
+  totalBeRepelValue: 100
+  weakTime: 0
+  totalWeakTime: 3
+  weakUpSpeed: 10
   id: 0
   jumpSpeed: 9
   searchState: 0

+ 29 - 0
ActionTowerDefense/Assets/Resources/Spine/demon_arrow/demon_arrow_Controller.controller

@@ -407,6 +407,32 @@ AnimationClip:
     floatParameter: 0
     intParameter: 0
     messageOptions: 1
+--- !u!1102 &-6657227240779058398
+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: -3542623208674112379}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!74 &-5160787971166571417
 AnimationClip:
   m_ObjectHideFlags: 0
@@ -938,6 +964,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: 9056245934726203780}
     m_Position: {x: 580, y: 120, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -6657227240779058398}
+    m_Position: {x: 350, y: 190, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []

+ 29 - 0
ActionTowerDefense/Assets/Resources/Spine/demon_giant/demon_diant_Controller.controller

@@ -26,6 +26,32 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1102 &-4570121512936720603
+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: 1051801443802230163}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!74 &-4009542058161340284
 AnimationClip:
   m_ObjectHideFlags: 0
@@ -685,6 +711,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: 4521684038172422630}
     m_Position: {x: 440, y: 170, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -4570121512936720603}
+    m_Position: {x: 683.6, y: 188.2, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []

+ 29 - 0
ActionTowerDefense/Assets/Resources/Spine/demon_sword/demon_sword_Controller.controller

@@ -251,6 +251,9 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_State: {fileID: -7448630632610108709}
     m_Position: {x: 460.41544, y: 176.64874, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 356585823751581090}
+    m_Position: {x: 719.6, y: 181.52437, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -395,6 +398,32 @@ AnimatorController:
     m_IKPass: 0
     m_SyncedLayerAffectsTiming: 0
     m_Controller: {fileID: 9100000}
+--- !u!1102 &356585823751581090
+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: -5791269459727520420}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!74 &1528282899756285681
 AnimationClip:
   m_ObjectHideFlags: 0

+ 28 - 0
ActionTowerDefense/Assets/Scenes/SampleScene.unity

@@ -1059,6 +1059,34 @@ PrefabInstance:
   m_Modification:
     m_TransformParent: {fileID: 0}
     m_Modifications:
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: totalWeakTime
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: totalBeRepelValue
+      value: 100
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: attack1Infos.Array.data[0].damage
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: attack1Infos.Array.data[1].damage
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: attack1Infos.Array.data[2].damage
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: attack1Infos.Array.data[3].damage
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 3571941038519084336, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
+      propertyPath: attack1Infos.Array.data[0].changeHurt
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 3571941038519084344, guid: 5b538f610930dd743a096c582e2810f4, type: 3}
       propertyPath: m_Name
       value: Player

+ 2 - 1
ActionTowerDefense/Assets/Scripts/AttackTrigger.cs

@@ -11,6 +11,7 @@ public class AttackTrigger : MonoBehaviour
     public Vector3 force;
     public bool changeHurt;
     public float hurtTime;
+    public float repelValue;
 
     private void Awake()
     {
@@ -36,7 +37,7 @@ public class AttackTrigger : MonoBehaviour
                 trigedObjs.Add(hitTrigger);
                 if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
                 {
-                    hitTrigger.BeHit(damage, force, changeHurt, hurtTime);
+                    hitTrigger.BeHit(damage, force, changeHurt, hurtTime, repelValue);
                 }
             }
         }

+ 2 - 2
ActionTowerDefense/Assets/Scripts/BeHitTrigger.cs

@@ -17,8 +17,8 @@ public class BeHitTrigger : MonoBehaviour
         
     }
 
-    public void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime)
+    public void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
     {
-        owner.BeHit(damage, force, changeHurt, hurtTime);
+        owner.BeHit(damage, force, changeHurt, hurtTime, repelValue);
     }
 }

+ 5 - 3
ActionTowerDefense/Assets/Scripts/Bullet.cs

@@ -18,6 +18,7 @@ public class Bullet : MonoBehaviour
     public float force;
     public bool changeHurt;
     public float hurtTime;
+    public float repelValue;
     public BulletType bulletType;
     public bool isGetTarget = false;
     public float speed;
@@ -49,7 +50,7 @@ public class Bullet : MonoBehaviour
         }
     }
 
-    public void BeShoot(Character own, Vector3 shootPos, Vector3 dir, int dmg, float fc, bool hurt, float time, bool track = false, Character target = null)
+    public void BeShoot(Character own, Vector3 shootPos, Vector3 dir, int dmg, float fc, bool hurt, float time, float repel, bool track = false, Character target = null)
     {
         transform.position = shootPos;
         transform.right = -dir;
@@ -60,6 +61,7 @@ public class Bullet : MonoBehaviour
         force = fc;
         changeHurt = hurt;
         hurtTime = time;
+        repelValue = repel;
         rb.velocity = dir * speed;
         isTrack = track;
         trackTarget = target;
@@ -97,12 +99,12 @@ public class Bullet : MonoBehaviour
                     switch (bulletType)
                     {
                         case BulletType.Single:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime);
+                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime, repelValue);
                             isGetTarget = true;
                             gameObject.SetActive(false);
                             break;
                         case BulletType.Penetrate:
-                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime);
+                            hitTrigger.BeHit(damage, force * (-transform.right), changeHurt, hurtTime, repelValue);
                             break;
                         case BulletType.Bomb:
                             break;

+ 6 - 8
ActionTowerDefense/Assets/Scripts/Character.cs

@@ -18,6 +18,7 @@ public enum CharacterState
     Rush = 9,
     Sprint = 10,
     Die = 11,
+    Weak = 12,
 }
 
 public enum AttackType
@@ -113,7 +114,7 @@ public class Character : MonoBehaviour
 
     }
 
-    public virtual void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime)
+    public virtual void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
     {
         if (invincibleTime > 0)
         {
@@ -125,12 +126,7 @@ public class Character : MonoBehaviour
         {
             rb.AddForce(force);
             ChangeState(CharacterState.Die);
-        }
-        else if (changeHurt)
-        {
-            rb.AddForce(force);
-            hurtKeepTime = hurtTime;
-            ChangeState(CharacterState.Hurt);
+            return;
         }
     }
 
@@ -152,7 +148,7 @@ public class Character : MonoBehaviour
         {
             attackDir.x = -attackDir.x;
         }
-        bullet.BeShoot(this, shootPos[shootId].position, attackDir, attackInfo.damage, attackInfo.force, attackInfo.changeHurt, attackInfo.hurtTime, shootTrack, attackTarget?attackTarget:null);
+        bullet.BeShoot(this, shootPos[shootId].position, attackDir, attackInfo.damage, attackInfo.force, attackInfo.changeHurt, attackInfo.hurtTime, attackInfo.repelValue, shootTrack, attackTarget?attackTarget:null);
     }
 
     public virtual Vector3 GetMoveDir()
@@ -190,6 +186,7 @@ public class Character : MonoBehaviour
                     attackTriggers[i].damage = attack1Infos[i].damage;
                     attackTriggers[i].changeHurt = attack1Infos[i].changeHurt;
                     attackTriggers[i].hurtTime = attack1Infos[i].hurtTime;
+                    attackTriggers[i].repelValue = attack1Infos[i].repelValue;
                     Vector3 attackDir = attack1Infos[i].attackDir.normalized;
                     if (bodyTrans.localScale.x < 0)
                     {
@@ -235,6 +232,7 @@ public class Character : MonoBehaviour
                     attackTriggers[i].damage = attack2Infos[i].damage;
                     attackTriggers[i].changeHurt = attack2Infos[i].changeHurt;
                     attackTriggers[i].hurtTime = attack2Infos[i].hurtTime;
+                    attackTriggers[i].repelValue = attack2Infos[i].repelValue;
                     Vector3 attackDir = attack2Infos[i].attackDir.normalized;
                     if (bodyTrans.localScale.x < 0)
                     {

+ 18 - 0
ActionTowerDefense/Assets/Scripts/Demonic.cs

@@ -185,6 +185,7 @@ public class Demonic : MoveCharacter
         attackTime -= Time.deltaTime;
         dieKeepTime -= Time.deltaTime;
         invincibleTime -= Time.deltaTime;
+        weakTime -= Time.deltaTime;
         Vector3 leftDir = GetMoveDir();
         bool isAttack = GetAttack();
         switch (state)
@@ -344,6 +345,13 @@ public class Demonic : MoveCharacter
                     break;
                 }
                 break;
+            case CharacterState.Weak:
+                if (weakTime <= 0)
+                {
+                    ChangeState(CharacterState.Idle);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -371,6 +379,8 @@ public class Demonic : MoveCharacter
             case CharacterState.Die:
                 isDie = false;
                 break;
+            case CharacterState.Weak:
+                break;
             default:
                 break;
         }
@@ -410,6 +420,14 @@ public class Demonic : MoveCharacter
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
                 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;
+                break;
             default:
                 break;
         }

+ 18 - 0
ActionTowerDefense/Assets/Scripts/Enemy.cs

@@ -130,6 +130,7 @@ public class Enemy : MoveCharacter
         attackTime -= Time.deltaTime;
         dieKeepTime -= Time.deltaTime;
         invincibleTime -= Time.deltaTime;
+        weakTime -= Time.deltaTime;
         Vector3 leftDir = GetMoveDir();
         bool isAttack = GetAttack();
         switch (state)
@@ -288,6 +289,13 @@ public class Enemy : MoveCharacter
                     break;
                 }
                 break;
+            case CharacterState.Weak:
+                if (weakTime <= 0)
+                {
+                    ChangeState(CharacterState.Idle);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -315,6 +323,8 @@ public class Enemy : MoveCharacter
             case CharacterState.Die:
                 isDie = false;
                 break;
+            case CharacterState.Weak:
+                break;
             default:
                 break;
         }
@@ -355,6 +365,14 @@ public class Enemy : MoveCharacter
                 dieKeepTime = totalDieKeepTime;
                 DropSouls();
                 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;
+                break;
             default:
                 break;
         }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/EnemyTower.cs

@@ -108,7 +108,7 @@ public class EnemyTower : Character
         }
     }
 
-    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime)
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
     {
         hp -= damage;
         uiHp.Show(hp, totalHp);

+ 35 - 0
ActionTowerDefense/Assets/Scripts/MoveCharacter.cs

@@ -9,5 +9,40 @@ public class MoveCharacter : Character
     public float extraRiseGravity = 0; //上升时额外重力加速度
     public float extraFallGravity = -10; //下落时额外重力加速度
     public float moveSpeed = 5;
+    [HideInInspector]
+    public float beRepelValue;
+    public float totalBeRepelValue;
+    [HideInInspector]
+    public float weakTime;
+    public float totalWeakTime;
+    public float weakUpSpeed = 10f;
 
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
+    {
+        if (invincibleTime > 0)
+        {
+            return;
+        }
+        hp -= damage;
+        uiHp.Show(hp, totalHp);
+        if (hp <= 0)
+        {
+            rb.AddForce(force);
+            ChangeState(CharacterState.Die);
+            return;
+        }
+        else if (changeHurt && state == CharacterState.Weak)
+        {
+            rb.AddForce(force);
+            hurtKeepTime = hurtTime;
+            ChangeState(CharacterState.Hurt);
+            beRepelValue = totalBeRepelValue;
+            return;
+        }
+        beRepelValue -= repelValue;
+        if (changeHurt && beRepelValue <= 0)
+        {
+            ChangeState(CharacterState.Weak);
+        }
+    }
 }

+ 17 - 0
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -20,6 +20,7 @@ public struct AttackInfo
     public float force;
     public bool changeHurt;
     public float hurtTime;
+    public float repelValue;
 }
 
 public enum PlayerAttackState
@@ -414,6 +415,7 @@ public class PlayerController : MoveCharacter
         rushTime -= Time.deltaTime;
         cacheRushTime -= Time.deltaTime;
         dieKeepTime -= Time.deltaTime;
+        weakTime -= Time.deltaTime;
 
         Vector3 velocity = rb.velocity;
         switch (state)
@@ -758,6 +760,13 @@ public class PlayerController : MoveCharacter
                     break;
                 }
                 break;
+            case CharacterState.Weak:
+                if (weakTime <= 0)
+                {
+                    ChangeState(CharacterState.Idle);
+                    break;
+                }
+                break;
             default:
                 break;
         }
@@ -832,6 +841,8 @@ public class PlayerController : MoveCharacter
             case CharacterState.Die:
                 isDie = false;
                 break;
+            case CharacterState.Weak:
+                break;
             default:
                 break;
         }
@@ -917,6 +928,12 @@ public class PlayerController : MoveCharacter
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
                 break;
+            case CharacterState.Weak:
+                aniCollider.Play("Weak", 0, 0);
+                ani.Play("weak", 0, 0);
+                velocity.y = weakUpSpeed;
+                weakTime = totalWeakTime;
+                break;
             default:
                 break;
         }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Tower.cs

@@ -109,7 +109,7 @@ public class Tower : Character
         }
     }
 
-    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime)
+    public override void BeHit(int damage, Vector3 force, bool changeHurt, float hurtTime, float repelValue)
     {
         hp -= damage;
         uiHp.Show(hp, totalHp);