Selaa lähdekoodia

Merge branch 'master' of http://bttc123.synology.me:3002/bttc123/ActionTowerDefense

DESKTOP-PG06IH1\Mr.AB 5 kuukautta sitten
vanhempi
commit
f1493455a3
34 muutettua tiedostoa jossa 1766 lisäystä ja 159 poistoa
  1. 0 0
      ActionTowerDefense/Assets/E ADADditor.meta
  2. 0 0
      ActionTowerDefense/Assets/E ADADditor/ReadOnlyDrawer.cs
  3. 0 0
      ActionTowerDefense/Assets/E ADADditor/ReadOnlyDrawer.cs.meta
  4. 0 0
      ActionTowerDefense/Assets/E ADADditor/SkeletonDataReader.cs
  5. 0 0
      ActionTowerDefense/Assets/E ADADditor/SkeletonDataReader.cs.meta
  6. 0 0
      ActionTowerDefense/Assets/E ADADditor/SpineSettings.asset
  7. 0 0
      ActionTowerDefense/Assets/E ADADditor/SpineSettings.asset.meta
  8. 8 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite.meta
  9. 194 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/Circle.prefab
  10. 7 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/Circle.prefab.meta
  11. 116 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hair.prefab
  12. 7 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hair.prefab.meta
  13. 58 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairController.prefab
  14. 7 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairController.prefab.meta
  15. 86 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairWarning.prefab
  16. 7 0
      ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairWarning.prefab.meta
  17. 161 9
      ActionTowerDefense/Assets/Resources/Prefab/Conduct/Demonic_BigGiant.prefab
  18. 2 2
      ActionTowerDefense/Assets/Resources/Spine/Enemy_Piggy/Enemy_Piggy_Controller.controller
  19. 8 0
      ActionTowerDefense/Assets/Resources/Textures/waterGhost.meta
  20. BIN
      ActionTowerDefense/Assets/Resources/Textures/waterGhost/waterGhost.jpg
  21. 123 0
      ActionTowerDefense/Assets/Resources/Textures/waterGhost/waterGhost.jpg.meta
  22. 6 147
      ActionTowerDefense/Assets/Scripts/Boss/Boss.cs
  23. 8 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost.meta
  24. 152 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/BlackUmbrella.cs
  25. 11 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/BlackUmbrella.cs.meta
  26. 208 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/HairSprint.cs
  27. 11 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/HairSprint.cs.meta
  28. 47 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/SingleHairAttack.cs
  29. 11 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/SingleHairAttack.cs.meta
  30. 63 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs
  31. 11 0
      ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs.meta
  32. 1 1
      ActionTowerDefense/Assets/Scripts/Tower/EnemyTower.cs
  33. 446 0
      ActionTowerDefense/Assets/levels.prefab
  34. 7 0
      ActionTowerDefense/Assets/levels.prefab.meta

+ 0 - 0
ActionTowerDefense/Assets/Editor.meta → ActionTowerDefense/Assets/E ADADditor.meta


+ 0 - 0
ActionTowerDefense/Assets/Editor/ReadOnlyDrawer.cs → ActionTowerDefense/Assets/E ADADditor/ReadOnlyDrawer.cs


+ 0 - 0
ActionTowerDefense/Assets/Editor/ReadOnlyDrawer.cs.meta → ActionTowerDefense/Assets/E ADADditor/ReadOnlyDrawer.cs.meta


+ 0 - 0
ActionTowerDefense/Assets/Editor/SkeletonDataReader.cs → ActionTowerDefense/Assets/E ADADditor/SkeletonDataReader.cs


+ 0 - 0
ActionTowerDefense/Assets/Editor/SkeletonDataReader.cs.meta → ActionTowerDefense/Assets/E ADADditor/SkeletonDataReader.cs.meta


+ 0 - 0
ActionTowerDefense/Assets/Editor/SpineSettings.asset → ActionTowerDefense/Assets/E ADADditor/SpineSettings.asset


+ 0 - 0
ActionTowerDefense/Assets/Editor/SpineSettings.asset.meta → ActionTowerDefense/Assets/E ADADditor/SpineSettings.asset.meta


+ 8 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ae82e65442fa64a4496d41caa53a6627
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 194 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/Circle.prefab

@@ -0,0 +1,194 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2189412713373399077
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7675562252993512822}
+  - component: {fileID: 5307394116646762133}
+  - component: {fileID: 1109267159852463349}
+  m_Layer: 0
+  m_Name: Circle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7675562252993512822
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2189412713373399077}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.2, y: 4.7, z: 0}
+  m_LocalScale: {x: 2.18, y: 1.09, z: 2.18}
+  m_ConstrainProportionsScale: 1
+  m_Children:
+  - {fileID: 1332610415822329914}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &5307394116646762133
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2189412713373399077}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 1
+  m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
+  m_Color: {r: 0.4433962, g: 0, b: 0, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 1, y: 1}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!114 &1109267159852463349
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2189412713373399077}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 07345f930f3057746bf3a1733794cb2c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  umbrellaState: 0
+  umbrellaOrigPos: {fileID: 0}
+  umbrellaBackPos: {fileID: 0}
+  owner: {fileID: 0}
+  attackDistance: 15
+  appearTime: 0.3
+  outTime: 0.4
+  stayTime: 2
+  backTime: 0.4
+  disappearTime: 0.3
+--- !u!1 &2622987413281467872
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1332610415822329914}
+  - component: {fileID: 5381078070742319142}
+  m_Layer: 0
+  m_Name: gan
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1332610415822329914
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2622987413281467872}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: -0.9, z: 0}
+  m_LocalScale: {x: 0.12, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7675562252993512822}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &5381078070742319142
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2622987413281467872}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+  m_Color: {r: 0.46226418, g: 0, b: 0, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 1, y: 1}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/Circle.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7d9c8f2f7a5caed46943b9b5f5da0889
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 116 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hair.prefab

@@ -0,0 +1,116 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &6508795287431129626
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6508795287431129629}
+  - component: {fileID: 6508795287431129628}
+  - component: {fileID: -9063241122368130818}
+  - component: {fileID: 7868394034830028542}
+  m_Layer: 0
+  m_Name: hair
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6508795287431129629
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_LocalRotation: {x: -0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 30, y: 0.20996803, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &6508795287431129628
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 1
+  m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 1, y: 1}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!114 &-9063241122368130818
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d4ad9310b40b2844395921f884ff5165, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  damage: 0
+  attackTime: 0
+  existTime: 0
+--- !u!65 &7868394034830028542
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 0.99999994, z: 0.2}
+  m_Center: {x: 0, y: 0, z: 0}

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hair.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 48ef6e9b8d784c64cb695d3b9b3a5f99
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 58 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairController.prefab

@@ -0,0 +1,58 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &431104053419175321
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 431104053419175320}
+  - component: {fileID: 431104053419175323}
+  m_Layer: 0
+  m_Name: hairController
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &431104053419175320
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 431104053419175321}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &431104053419175323
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 431104053419175321}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b782cdb7d708f2b4da305d02282e3d8d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  hairState: 0
+  attackTime: 7
+  damage: 100
+  hairPre: {fileID: 6508795287431129626, guid: 48ef6e9b8d784c64cb695d3b9b3a5f99, type: 3}
+  warningPre: {fileID: 6508795287431129626, guid: e195fa890bd3aae43bd00260529e2372, type: 3}
+  aims: []
+  ws: {fileID: 0}
+  aimChas: []
+  warningTime: 0.1
+  existTime: 2
+  searchTime: 0.1
+  singleChuaTime: 0.2

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairController.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6cee5822ea2b0004dbc5f8064b71ab88
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 86 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairWarning.prefab

@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &6508795287431129626
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6508795287431129629}
+  - component: {fileID: 6508795287431129628}
+  m_Layer: 0
+  m_Name: hairWarning
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6508795287431129629
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_LocalRotation: {x: -0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 30, y: 0.07, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &6508795287431129628
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6508795287431129626}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 1
+  m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+  m_Color: {r: 1, g: 0, b: 0, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 1, y: 1}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Boss/WaterSprite/hairWarning.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e195fa890bd3aae43bd00260529e2372
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 161 - 9
ActionTowerDefense/Assets/Resources/Prefab/Conduct/Demonic_BigGiant.prefab

@@ -108,17 +108,27 @@ MonoBehaviour:
       backSpeed: {x: 0, y: 0}
       rotateSpeed: {x: 0, y: 0}
       height: {x: 0, y: 0}
+      ControlOrder: 0
     blowUp:
+      directionType: 0
       dir: {x: 0, y: 0, z: 0}
       force: 0
       time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
     shotDown:
+      directionType: 0
       dir: {x: 0, y: 0, z: 0}
       force: 0
       time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
     weak:
       time: 0
-    armor:
+      ControlOrder: 0
+    armorPiercing:
       rate: 0
     vulnerable:
       rate: 0
@@ -127,6 +137,7 @@ MonoBehaviour:
       rate: 0
     sustainedInjury:
       damage: 0
+    isDemSummon: 0
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   repelValue: 0
@@ -144,6 +155,8 @@ GameObject:
   - component: {fileID: 6069085609270885073}
   - component: {fileID: 5217712517297835056}
   - component: {fileID: 3377671071202039733}
+  - component: {fileID: 4301865574317177265}
+  - component: {fileID: 3070135690023751297}
   m_Layer: 19
   m_Name: BeHitTrigger
   m_TagString: Untagged
@@ -194,6 +207,94 @@ MonoBehaviour:
   owner: {fileID: 0}
   attackerID: 0
   curX: 0
+--- !u!114 &4301865574317177265
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2460330936527559963}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1d04dd6e35d71724689001e450625c39, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  curSpecialStates: -1
+  attributeTime: 0
+  floatingState: 0
+  hitState: 0
+  isFly: 0
+  decelerationRatioX: 2
+  decelerationRatioY: 15
+  haveVulnerable: 0
+  vulnerableTime: 0
+  resistances:
+    controlOrder: 0
+    Float: 0
+    BlowUp: 0
+    ShotDown: 0
+    Weak: 0
+    armor: 0
+--- !u!114 &3070135690023751297
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2460330936527559963}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 38dc6c579f75e924697fbe3639d11c9f, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  freezeFrame: 0
+  isFreeze: 0
+  canFreeze: 0
+  curCharacterState: 0
+  attackInfoData:
+    attackValue: 0
+    damage: 0
+    attackDir: {x: 0, y: 0, z: 0}
+    attackEffect: 
+    floatState:
+      time: 0
+      upTime: {x: 0, y: 0}
+      backSpeed: {x: 0, y: 0}
+      rotateSpeed: {x: 0, y: 0}
+      height: {x: 0, y: 0}
+      ControlOrder: 0
+    blowUp:
+      directionType: 0
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
+    shotDown:
+      directionType: 0
+      dir: {x: 0, y: 0, z: 0}
+      force: 0
+      time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
+    weak:
+      time: 0
+      ControlOrder: 0
+    armorPiercing:
+      rate: 0
+    vulnerable:
+      rate: 0
+      time: 0
+    changeDamage:
+      rate: 0
+    sustainedInjury:
+      damage: 0
+    isDemSummon: 0
+  attackFromData: {fileID: 0}
+  hitStunTime: 0
+  canHitStun: 0
 --- !u!1 &4480734502875862885
 GameObject:
   m_ObjectHideFlags: 0
@@ -511,8 +612,11 @@ MonoBehaviour:
   canNotChangeHurt: 0
   invincibleTime: 0
   injuryNumText: {fileID: 6467251191553420251, guid: 9b37289f93ea76745ab2cefb79a93e3c, type: 3}
+  injuryNumTextSummon: {fileID: 0}
+  isBeHitBySummonAttack: 0
   showInjuryNum: 0
   canFly: 0
+  nowCanFly: 0
   statePre: {fileID: 0}
   ls: {fileID: 0}
   isInSoulTower: 0
@@ -521,6 +625,10 @@ MonoBehaviour:
   cookEffect: {fileID: 0}
   Attack_summonShootCanTransmit: 0
   debugAttackFrom: 0
+  injuryNumPos_summon: {x: 0, y: 1}
+  injuryNumRandom_summon: {x: 1, y: 1}
+  injuryNumPos_march: {x: 0, y: 1}
+  injuryNumRandom_march: {x: 2, y: 2}
   foot: {fileID: 5440846222604650418}
   attributeStatus: {fileID: 0}
   hitFeedbackSystem: {fileID: 0}
@@ -557,6 +665,8 @@ MonoBehaviour:
   sustainedInjury_IntervalTime: 0
   sustainedInjury_damage: 0
   heavyDamage: 0
+  killer: {fileID: 0}
+  soldierType: 0
   player: {fileID: 0}
   playerID: 0
   id: 0
@@ -628,7 +738,6 @@ MonoBehaviour:
   attackInterval: 0
   curDamage: 0
   canHitFly: 1
-  armorPiercing: 0
   attackInfo:
     attackValue: 0
     damage: 0
@@ -640,17 +749,27 @@ MonoBehaviour:
       backSpeed: {x: 0, y: 0}
       rotateSpeed: {x: 0, y: 0}
       height: {x: 0, y: 0}
+      ControlOrder: 0
     blowUp:
+      directionType: 0
       dir: {x: 0, y: 0, z: 0}
       force: 0
       time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
     shotDown:
+      directionType: 0
       dir: {x: 0, y: 0, z: 0}
       force: 0
       time: 0
+      haveLandingDamage: 0
+      landingDamage: 0
+      ControlOrder: 0
     weak:
       time: 0
-    armor:
+      ControlOrder: 0
+    armorPiercing:
       rate: 0
     vulnerable:
       rate: 0
@@ -659,6 +778,7 @@ MonoBehaviour:
       rate: 0
     sustainedInjury:
       damage: 0
+    isDemSummon: 0
   addAttackEffect: {fileID: 0}
   skill: {fileID: 0}
   attackEffect: {fileID: 0}
@@ -676,7 +796,6 @@ MonoBehaviour:
   - id: 0
     attackName: "\u8D77\u624B\u5F0F\u6376\u5730"
     attackType: 0
-    attackEffect: {fileID: 0}
     attackInfo:
       attackValue: 0
       damage: 50
@@ -688,17 +807,27 @@ MonoBehaviour:
         backSpeed: {x: 0, y: 0}
         rotateSpeed: {x: 0, y: 0}
         height: {x: 0, y: 0}
+        ControlOrder: 0
       blowUp:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       shotDown:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       weak:
         time: 0
-      armor:
+        ControlOrder: 0
+      armorPiercing:
         rate: 0
       vulnerable:
         rate: 0
@@ -707,6 +836,7 @@ MonoBehaviour:
         rate: 0
       sustainedInjury:
         damage: 0
+      isDemSummon: 0
     attackTrigger: {fileID: 7729941002223262554}
     attackDistance: 0
     maxAttackDis: 0
@@ -726,7 +856,6 @@ MonoBehaviour:
   - id: 1
     attackName: "\u884C\u519B\u5F0F\u6376\u5730"
     attackType: 0
-    attackEffect: {fileID: 0}
     attackInfo:
       attackValue: 0
       damage: 50
@@ -738,17 +867,27 @@ MonoBehaviour:
         backSpeed: {x: 0, y: 0}
         rotateSpeed: {x: 0, y: 0}
         height: {x: 0, y: 0}
+        ControlOrder: 0
       blowUp:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       shotDown:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       weak:
         time: 0
-      armor:
+        ControlOrder: 0
+      armorPiercing:
         rate: 0
       vulnerable:
         rate: 0
@@ -757,6 +896,7 @@ MonoBehaviour:
         rate: 0
       sustainedInjury:
         damage: 0
+      isDemSummon: 0
     attackTrigger: {fileID: 7729941002223262554}
     attackDistance: 0
     maxAttackDis: 0
@@ -777,7 +917,6 @@ MonoBehaviour:
     id: 0
     attackName: 
     attackType: 0
-    attackEffect: {fileID: 0}
     attackInfo:
       attackValue: 0
       damage: 0
@@ -789,17 +928,27 @@ MonoBehaviour:
         backSpeed: {x: 0, y: 0}
         rotateSpeed: {x: 0, y: 0}
         height: {x: 0, y: 0}
+        ControlOrder: 0
       blowUp:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       shotDown:
+        directionType: 0
         dir: {x: 0, y: 0, z: 0}
         force: 0
         time: 0
+        haveLandingDamage: 0
+        landingDamage: 0
+        ControlOrder: 0
       weak:
         time: 0
-      armor:
+        ControlOrder: 0
+      armorPiercing:
         rate: 0
       vulnerable:
         rate: 0
@@ -808,6 +957,7 @@ MonoBehaviour:
         rate: 0
       sustainedInjury:
         damage: 0
+      isDemSummon: 0
     attackTrigger: {fileID: 0}
     attackDistance: 0
     maxAttackDis: 0
@@ -1066,6 +1216,8 @@ MeshRenderer:
   m_Materials:
   - {fileID: 2100000, guid: 466a6130b6c56614caef9c2f5961b3a8, type: 2}
   - {fileID: 2100000, guid: dc7a2704fc39fb24997c9f6279033f5c, type: 2}
+  - {fileID: 2100000, guid: 466a6130b6c56614caef9c2f5961b3a8, type: 2}
+  - {fileID: 2100000, guid: dc7a2704fc39fb24997c9f6279033f5c, type: 2}
   m_StaticBatchInfo:
     firstSubMesh: 0
     subMeshCount: 0

+ 2 - 2
ActionTowerDefense/Assets/Resources/Spine/Enemy_Piggy/Enemy_Piggy_Controller.controller

@@ -345,8 +345,8 @@ AnimatorStateMachine:
   m_EntryTransitions: []
   m_StateMachineTransitions: {}
   m_StateMachineBehaviours: []
-  m_AnyStatePosition: {x: 50, y: 20, z: 0}
-  m_EntryPosition: {x: 50, y: 120, z: 0}
+  m_AnyStatePosition: {x: 180, y: 20, z: 0}
+  m_EntryPosition: {x: 180, y: 110, z: 0}
   m_ExitPosition: {x: 800, y: 120, z: 0}
   m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
   m_DefaultState: {fileID: -7448630632610108709}

+ 8 - 0
ActionTowerDefense/Assets/Resources/Textures/waterGhost.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e801c7040c0ebef438a14e44f35c27d6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
ActionTowerDefense/Assets/Resources/Textures/waterGhost/waterGhost.jpg


+ 123 - 0
ActionTowerDefense/Assets/Resources/Textures/waterGhost/waterGhost.jpg.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 14c3347b57675284ea8e935888d3be46
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 147
ActionTowerDefense/Assets/Scripts/Boss/Boss.cs

@@ -19,90 +19,21 @@ public enum AttackCategories
     B = 1,
 }
 
-[System.Serializable]
-public struct BossState
-{
-    public int coreHp;                      //核心血量
-    public float scale;                     //体型
-    public StateWeakness[] weaknesses;      //弱点
-    public GameObject core;
-}
-
-[System.Serializable]
-public struct StateWeakness
-{
-    public GameObject obj;
-    public int Hp;
-}
-
 public class Boss : MoveCharacter
 {
     [Header("Boss属性")]
-    public BossState[] states;              //阶段
-    private int maxStateId;                 //最高为第几阶段,0开始
-    public int curStateId;                  //当前处于阶段n
-    private BossState curState;
-    private int curStateTotalHp;            //当前阶段总血量
-    public int restWeaknessNum;             //剩余弱点数量
-    private Weakness coreWeakness;
-    public GameObject roarEffect;
-    public float roarTime;
-    public bool isChangeState;
-
-    [Header("核心受到伤害倍率")]
-    public int coreDamageRate;
-
     [Header("当前索敌是对塔还是对玩家")]
     public TargetType curTarget;
 
     [Header("Boss攻击规律")]
     public string circulate;                //循环配置
     private int len;
-    public AttackCategories[] categories;  //循环大类
+    public AttackCategories[] categories;   //循环大类
     private AttackCategories curCategory;   //当前攻击大类
     public int curCategoryID;
     public float minInterval, maxInterval;  //间隔时间
     private float curInterval;
 
-    //计算当前形态总血量
-    private void CalculateHp()
-    {
-        curStateTotalHp = curState.coreHp * coreDamageRate;
-        foreach(StateWeakness w in curState.weaknesses)
-        {
-            curStateTotalHp += w.Hp;
-        }
-        totalHp = curStateTotalHp;
-        hp = totalHp;
-        uiHp.Show(hp, totalHp);
-    }
-
-    //切换形态
-    private void ChangeBossState()
-    {
-        curState = states[curStateId];
-        toLargeSize = curState.scale;
-        beLarger = true;
-        ChangeWeakness();
-        CalculateHp();
-        curInterval = Random.Range(minInterval, maxInterval);
-    }
-
-    //切换弱点
-    private void ChangeWeakness()
-    {
-        StateWeakness[] ws = curState.weaknesses;
-        restWeaknessNum = ws.Length;
-        for (int i = 0; i < restWeaknessNum; i++)
-        {
-            Weakness w = ws[i].obj.GetComponent<Weakness>();
-            w.totalHp = ws[i].Hp;
-            w.boss = this;
-            ws[i].obj.SetActive(true);
-            ws[i].obj.GetComponentInChildren<ParticleSystem>().Play();
-        }
-    }
-
     public override void Init()
     {
         //确保组件不丢失
@@ -118,16 +49,10 @@ public class Boss : MoveCharacter
         curInterval = Random.Range(minInterval, maxInterval);
     }
 
-    private void Awake()
-    {
-    }
-
     public virtual void Start()
     {
         len = circulate.Length;
-        ChangeBossState();
         Init();
-        maxStateId = states.Length - 1;
         int cur = 0;
         categories = new AttackCategories[len];
         foreach(char c in circulate)
@@ -150,10 +75,6 @@ public class Boss : MoveCharacter
 
     public override void BeHit(int damage)
     {
-        if (restWeaknessNum == 0)
-        {
-            damage *= coreDamageRate;
-        }
         hp -= damage;
 
         //伤害跳字
@@ -172,46 +93,7 @@ public class Boss : MoveCharacter
         uiHp.Show(hp, totalHp);
         if (hp <= 0)
         {
-            coreWeakness.ChangeState(CharacterState.Die);
-            if (curStateId < maxStateId)
-            {
-                curStateId++;
-                isChangeState = true;
-                roarEffect.SetActive(true);
-                roarEffect.GetComponentInChildren<ParticleSystem>().Play();
-                ChangeState(CharacterState.Idle);
-                Invoke("ChangeBossState", roarTime);
-            }
-            else
-            {
-                ChangeState(CharacterState.Die);
-            }
-            return;
-        }
-    }
-
-    public void CheckCoreOut()
-    {
-        restWeaknessNum -= 1;
-        if (restWeaknessNum == 0)
-        {
-            coreWeakness = curState.core.GetComponent<Weakness>();
-            coreWeakness.boss = this;
-            coreWeakness.isCore = true;
-            curState.core.SetActive(true);
-            curState.core.GetComponentInChildren<ParticleSystem>().Play();
-        }
-    }
-
-    public override void Update()
-    {
-        if (beLarger)
-        {
-            Enlarge();
-            if (toLargeSize == 0)
-            {
-                isChangeState = false;
-            }
+            ChangeState(CharacterState.Die);
         }
     }
 
@@ -259,13 +141,10 @@ public class Boss : MoveCharacter
         switch (state)
         {
             case CharacterState.Idle:
-                if (!isChangeState)
+                curInterval -= Time.deltaTime;
+                if (curInterval <= 0)
                 {
-                    curInterval -= Time.deltaTime;
-                    if (curInterval <= 0)
-                    {
-                        RandomAttackState();
-                    }
+                    RandomAttackState();
                 }
                 break;
             case CharacterState.Run:
@@ -303,29 +182,9 @@ public class Boss : MoveCharacter
                 break;
             case TargetType.Player:
                 PlayerController p1 = PlayersInput.instance[0];
-                PlayerController p2 = PlayersInput.instance[1];
                 bool p1Alive = (p1 != null && !p1.isRevive);
-                bool p2Alive = (p2 != null && !p2.isRevive);
                 float dis1 = Vector2.Distance(transform.position, p1.transform.position);
-                float dis2 = Vector2.Distance(transform.position, p2.transform.position);
-                if (p1Alive)
-                {
-                    if (p2Alive)
-                    {
-                        curTar = dis1 > dis2 ? p1 : p2;
-                    }
-                    else
-                    {
-                        curTar = p1;
-                    }
-                }
-                else
-                {
-                    if(p2Alive)
-                    {
-                        curTar = p2;
-                    }
-                }
+                curTar = p1;
                 break;
             default:
                 break;

+ 8 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7117217f619f6b742ac6333aa3945684
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 152 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/BlackUmbrella.cs

@@ -0,0 +1,152 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+public class BlackUmbrella : MonoBehaviour
+{
+    public enum UmbrellaState
+    {
+        none,
+        appear,     //出现,原地动画
+        sprint,     //飞出去
+        stay,       //停在目标点
+        back,       //收回
+        disappear,  //消失前原地动画
+    }
+
+    [DisplayOnly]
+    public UmbrellaState umbrellaState;     //当前黑伞的状态
+    [HideInInspector]
+    public Transform umbrellaOrigPos;
+    [HideInInspector]
+    public Transform umbrellaBackPos;
+
+    [HideInInspector]
+    public Transform owner;
+ 
+    private Animator ani;
+
+    //黑伞的目标坐标
+    public float attackDistance;
+    private Vector3 aimPos;
+
+    //黑伞的攻击时长
+    private float umbrePastTime;
+    [LabelText("黑伞出现时长")]
+    public float appearTime;
+    [LabelText("黑伞冲出时长")]
+    public float outTime;
+    [LabelText("黑伞停留时长")]
+    public float stayTime;
+    [LabelText("黑伞收回时长")]
+    public float backTime;
+    [LabelText("黑伞消失时长")]
+    public float disappearTime;
+
+    private void Start()
+    {
+        if (ani == null)
+        {
+            ani = GetComponent<Animator>();
+        }
+    }
+
+    //放出这个攻击!
+    public void Release()
+    {
+        ChangeUmbrellaState(UmbrellaState.appear);
+    }
+
+    private void ChangeUmbrellaState(UmbrellaState us)
+    {
+        if (umbrellaState == us)
+        {
+            return;
+        }
+        umbrellaState = us;
+        switch (us)
+        {
+            case UmbrellaState.appear:
+                transform.position = umbrellaOrigPos.position;
+                gameObject.SetActive(true);
+                //出现动画
+                //ani.Play("??");
+                break;
+            case UmbrellaState.sprint:
+                aimPos = transform.position;
+                aimPos.x -= attackDistance * owner.localScale.x;
+                //冲击动画
+                //ani.Play("??")
+                break;
+            case UmbrellaState.stay:
+                //停留动画
+                //ani.Play("??")
+                break;
+            case UmbrellaState.back:
+                //回收动画
+                //ani.Play("??")
+                break;
+            case UmbrellaState.disappear:
+                //消失动画
+                //ani.Play("??")
+                break;
+        }
+    }
+
+    private void OnUmbrellaState()
+    {
+        umbrePastTime += Time.deltaTime;
+        switch (umbrellaState)
+        {
+            case UmbrellaState.appear:
+                if (umbrePastTime >= appearTime)
+                {
+                    umbrePastTime = 0;
+                    ChangeUmbrellaState(UmbrellaState.sprint);
+                }
+                break;
+            case UmbrellaState.sprint:
+                float t = Mathf.Clamp01(umbrePastTime / outTime);
+                float smoothT = Mathf.SmoothStep(0, 1, t);
+                transform.position = Vector3.Lerp(umbrellaOrigPos.position, aimPos, smoothT);
+                if (umbrePastTime >= outTime)
+                {
+                    transform.position = aimPos;
+                    umbrePastTime = 0;
+                    ChangeUmbrellaState(UmbrellaState.stay);
+                }
+                break;
+            case UmbrellaState.stay:
+                if (umbrePastTime >= stayTime)
+                {
+                    umbrePastTime = 0;
+                    ChangeUmbrellaState(UmbrellaState.back);
+                }
+                break;
+            case UmbrellaState.back:
+                float t2 = Mathf.Clamp01(umbrePastTime / backTime);
+                float smoothT2 = Mathf.SmoothStep(0, 1, t2);
+                transform.position = Vector3.Lerp(aimPos, umbrellaBackPos.position, smoothT2);
+                if (umbrePastTime >= backTime)
+                {
+                    umbrePastTime = 0;
+                    ChangeUmbrellaState(UmbrellaState.disappear);
+                }
+                break;
+            case UmbrellaState.disappear:
+                if (umbrePastTime >= disappearTime)
+                {
+                    umbrePastTime = 0;
+                    ChangeUmbrellaState(UmbrellaState.none);
+                    gameObject.SetActive(false);
+                }
+                break;
+        }
+    }
+
+    private void Update()
+    {
+        OnUmbrellaState();
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/BlackUmbrella.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 07345f930f3057746bf3a1733794cb2c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 208 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/HairSprint.cs

@@ -0,0 +1,208 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+using System.Linq;
+
+public class HairSprint : MonoBehaviour
+{
+    public enum HairState
+    {
+        none,
+        SearchAim,
+        Chua,
+    }
+
+    [DisplayOnly]
+    public HairState hairState;
+
+    [LabelText("总攻击次数")]
+    public int attackTime;
+    private int curTime;
+    [LabelText("伤害值")]
+    public int damage;
+
+    [LabelText("头发预制体")]
+    public GameObject hairPre;
+    [LabelText("预警预制体")]
+    public GameObject warningPre;
+
+    private GameObject[] hairIns = new GameObject[7];
+    private GameObject[] warningIns = new GameObject[7];
+
+    //生成到第几根头发了
+    private int curHairID;
+
+    //动画
+    private Animator ani;
+
+    [DisplayOnly]
+    [LabelText("目标坐标")]
+    public Vector3[] aims;
+    private bool hasFoundAllAims;
+    [HideInInspector]
+    public WaterSprite ws;
+    [DisplayOnly]
+    public Character[] aimChas;
+
+    [Header("动画时长")]
+    [LabelText("预警时长")]
+    public float warningTime;
+    [LabelText("存在时长")]
+    public float existTime;
+    private float pastTime;
+    [LabelText("找目标时长")]
+    public float searchTime;
+    [LabelText("单个攻击动画时长")]
+    public float singleChuaTime;
+
+    public void Release()
+    {
+        gameObject.SetActive(true);
+        curHairID = 0;
+        ChangeHairState(HairState.SearchAim);
+    }
+
+    private void ChangeHairState(HairState hs)
+    {
+        if (hairState == hs)
+        {
+            return;
+        }
+        hairState = hs;
+        switch (hs)
+        {
+            case HairState.SearchAim:
+                aimChas = new Character[attackTime];
+                GetAims();
+                break;
+            case HairState.Chua:
+                curTime = 0;
+                for(int i = 0; i < 7; i++)
+                {
+                    if (hairIns[i] == null)
+                    {
+                        //预警实例生成
+                        warningIns[i] = Instantiate(warningPre);
+                        warningIns[i].SetActive(false);
+                        //头发实例生成
+                        hairIns[i] = Instantiate(hairPre);
+                        hairIns[i].SetActive(false);
+                        SingleHairAttack sha = hairIns[i].GetComponent<SingleHairAttack>();
+                        sha.existTime = existTime;
+                        sha.attackTime = attackTime;
+                        sha.damage = damage;
+                    }
+                }
+                Chua(0);
+                break;
+        }
+    }
+
+    private void GetAims()
+    {
+        aims = new Vector3[7];
+        List<Character> aimCharacters = new List<Character>(7);
+        aimCharacters = ws.searchTrigger.GetAllTargets(ws.targetTypes, true);
+        bool hasAimedPlayer = false;
+        var sortedObjects = aimCharacters.OrderBy(obj => Vector3.Distance(transform.position, obj.transform.position)).ToArray();
+        if (sortedObjects.Length > attackTime)
+        {
+            for(int i = 0; i < attackTime - 1; i++)
+            {
+                aimChas[i] = sortedObjects[i];
+                if (sortedObjects[i].gameObject.layer == 6)
+                {
+                    hasAimedPlayer = true;
+                }
+                aims[i] = sortedObjects[i].bodyTrans.position;
+            }
+            if (hasAimedPlayer)
+            {
+                aims[attackTime - 1] = sortedObjects[attackTime - 1].bodyTrans.position;
+            }
+            else
+            {
+                aims[attackTime - 1] = PlayersInput.instance[0].bodyTrans.position;
+            }
+        }
+        else
+        {
+            int id = 0;
+            foreach(Character c in aimCharacters)
+            {
+                aims[id] = c.bodyTrans.position;
+                id++;
+            }
+            Vector3 v = PlayersInput.instance[0].bodyTrans.position;
+            for(int i = id; i < attackTime; i++)
+            {
+                aims[i] = v;
+            }
+        }
+        hasFoundAllAims = true;
+    }
+
+    private void Chua(int id)
+    {
+        Debug.Log(id);
+        //警示线出现
+        warningIns[id].transform.position = aims[id];
+        float ro = Random.Range(0, 360);
+        warningIns[id].transform.localEulerAngles = new Vector3(0, 0, ro);
+        warningIns[id].SetActive(true);
+        //头发出来
+        Invoke("HairOut", warningTime);
+    }
+
+    private void HairOut()
+    {
+        int id = curHairID;
+        hairIns[id].transform.position = aims[id];
+        hairIns[id].transform.localEulerAngles = warningIns[id].transform.localEulerAngles;
+        hairIns[id].SetActive(true);
+        warningIns[id].SetActive(false);
+        print(id);
+        curHairID++;
+    }
+
+    private void OnHairState()
+    {
+        pastTime += Time.deltaTime;
+        switch (hairState)
+        {
+            case HairState.SearchAim:
+                if (pastTime >= searchTime && hasFoundAllAims)
+                {
+                    pastTime = 0;
+                    ChangeHairState(HairState.Chua);
+                }
+                break;
+            case HairState.Chua:
+                if (curTime < attackTime)
+                {
+                    pastTime += Time.deltaTime;
+                    if (pastTime >= singleChuaTime)
+                    {
+                        pastTime = 0;
+                        curTime++;
+                        if (curTime != attackTime)
+                        {
+                            Chua(curTime);
+                        }
+                    }
+                }
+                else
+                {
+                    ChangeHairState(HairState.none);
+                    gameObject.SetActive(false);
+                }
+                break;
+        }
+    }
+
+    private void Update()
+    {
+        OnHairState();
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/HairSprint.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b782cdb7d708f2b4da305d02282e3d8d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 47 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/SingleHairAttack.cs

@@ -0,0 +1,47 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class SingleHairAttack : MonoBehaviour
+{
+    public int damage;
+    public float attackTime;
+    public float existTime;
+    private float pastTime;
+    private Collider col;
+    private bool f;
+
+    private void Awake()
+    {
+        col = GetComponent<Collider>();
+    }
+
+    private void OnEnable()
+    {
+        f = true;
+        pastTime = 0;
+        col.enabled = true;
+    }
+
+    private void OnTriggerEnter(Collider other)
+    {
+        if (other.gameObject.layer == 6 || other.gameObject.layer == 7)
+        {
+            other.GetComponentInParent<MoveCharacter>().beHitTrigger.BeHit(damage);
+        }
+    }
+
+    private void Update()
+    {
+        pastTime += Time.deltaTime;
+        if (f && pastTime >= attackTime)
+        {
+            f = false;
+            col.enabled = false;
+        }
+        if (pastTime >= existTime)
+        {
+            gameObject.SetActive(false);
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/SingleHairAttack.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d4ad9310b40b2844395921f884ff5165
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 63 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs

@@ -0,0 +1,63 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Sirenix.OdinInspector;
+
+public class WaterSprite : MonoBehaviour
+{
+    [Header("水诡白家娘娘")]
+    [Header("黑伞")]
+    public GameObject umbrellaPrefab;       //预制体
+    private GameObject umbrellaInstance;    //实例化
+    private BlackUmbrella blackUmbrella;
+    [LabelText("黑伞攻击初始位置")]
+    public Transform umbrellaOrigPos;
+    [LabelText("黑伞收回结束位置")]
+    public Transform umbrellaBackPos;
+
+    [Header("辫子攻击")]
+    public GameObject hairPrefab;
+    private GameObject hairInstance;
+    private HairSprint hairSprint;
+
+    [Header("临时")]
+    public SearchTrigger searchTrigger;
+    public List<TargetType> targetTypes;
+
+    //黑伞回旋镖
+    private void SkillBlackUmbrella()
+    {
+        if (umbrellaInstance == null)
+        {
+            umbrellaInstance = Instantiate(umbrellaPrefab, transform);
+            umbrellaInstance.SetActive(false);
+            blackUmbrella = umbrellaInstance.GetComponent<BlackUmbrella>();
+            blackUmbrella.umbrellaOrigPos = umbrellaOrigPos;
+            blackUmbrella.umbrellaBackPos = umbrellaBackPos;
+            blackUmbrella.owner = transform;
+        }
+        blackUmbrella.Release();
+    }
+
+    //辫子狠狠戳
+    private void SkillHairSprint()
+    {
+        if (hairInstance == null)
+        {
+            hairInstance = Instantiate(hairPrefab, transform);
+            hairInstance.SetActive(false);
+            hairSprint = hairInstance.GetComponent<HairSprint>();
+            hairSprint.ws = this;
+        }
+        hairSprint.Release();
+    }
+
+    private void Update()
+    {
+        if (Input.GetKeyDown(KeyCode.Q))
+        {
+            SkillHairSprint();
+            //SkillBlackUmbrella();
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Boss/WaterGhost/WaterSprite.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c2beef45b72ca384880966b46f01e9c5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

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

@@ -119,7 +119,7 @@ public class EnemyTower : Character
             case CharacterState.Die:
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
-                TowerMap.myTowers.Remove(gameObject);
+                TowerMap.enemyTowers.Remove(gameObject);
                 break;
             default:
                 break;

+ 446 - 0
ActionTowerDefense/Assets/levels.prefab

@@ -0,0 +1,446 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4749158947262946106
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4749158947262946109}
+  - component: {fileID: 4749158947262946111}
+  - component: {fileID: 4749158947262946108}
+  m_Layer: 5
+  m_Name: shield
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4749158947262946109
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947262946106}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4749158948704056320}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -2.500122, y: 0.000061035156}
+  m_SizeDelta: {x: 200, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4749158947262946111
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947262946106}
+  m_CullTransparentMesh: 1
+--- !u!114 &4749158947262946108
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947262946106}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: LV1
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_sharedMaterial: {fileID: -1504297583073342176, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 36
+  m_fontSizeBase: 36
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 0
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 256
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!1 &4749158947608817333
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4749158947608817332}
+  - component: {fileID: 4749158947608817334}
+  - component: {fileID: 4749158947608817335}
+  m_Layer: 5
+  m_Name: sword
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4749158947608817332
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947608817333}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4749158948704056320}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -121.5, y: 0.000061035156}
+  m_SizeDelta: {x: 200, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4749158947608817334
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947608817333}
+  m_CullTransparentMesh: 1
+--- !u!114 &4749158947608817335
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158947608817333}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: LV1
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_sharedMaterial: {fileID: -1504297583073342176, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 36
+  m_fontSizeBase: 36
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 0
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 256
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!1 &4749158948186086636
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4749158948186086639}
+  - component: {fileID: 4749158948186086641}
+  - component: {fileID: 4749158948186086638}
+  m_Layer: 5
+  m_Name: spear
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4749158948186086639
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158948186086636}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4749158948704056320}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 121.499695, y: 0.000061035156}
+  m_SizeDelta: {x: 200, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4749158948186086641
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158948186086636}
+  m_CullTransparentMesh: 1
+--- !u!114 &4749158948186086638
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158948186086636}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: LV1
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_sharedMaterial: {fileID: -1504297583073342176, guid: 39a7404a24ab897418249c0d649949a8, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 36
+  m_fontSizeBase: 36
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 0
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 256
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!1 &4749158948704056321
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4749158948704056320}
+  m_Layer: 5
+  m_Name: levels
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4749158948704056320
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4749158948704056321}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 4749158947608817332}
+  - {fileID: 4749158947262946109}
+  - {fileID: 4749158948186086639}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 783.5, y: -525}
+  m_SizeDelta: {x: 443, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}

+ 7 - 0
ActionTowerDefense/Assets/levels.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d83a082725e33e443ac812355ce222de
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: