浏览代码

- 根须缠绕

1243896040 4 周之前
父节点
当前提交
da3607b50a

+ 171 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootBinding.prefab

@@ -0,0 +1,171 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &3379020734583480684
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3317128582922500549}
+  - component: {fileID: 5040162479225490407}
+  m_Layer: 20
+  m_Name: RootBinding
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3317128582922500549
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3379020734583480684}
+  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: 2157804666810872605}
+  - {fileID: 2032205408854399244}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5040162479225490407
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3379020734583480684}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a687e49b6b2a3584db53335176682817, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  ratio: 1
+  binding: {fileID: 2032205408854399244}
+  speed: 5
+  target: {fileID: 0}
+  targetScale: {x: 0, y: 0, z: 0}
+  time: 0
+  player: {fileID: 0}
+  damage: 0
+--- !u!1 &6855637659924415997
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2157804666810872605}
+  - component: {fileID: 6964723780507241472}
+  m_Layer: 20
+  m_Name: Triangle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2157804666810872605
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6855637659924415997}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0.342, z: 0}
+  m_LocalScale: {x: 1, y: 1.2, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3317128582922500549}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &6964723780507241472
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6855637659924415997}
+  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: 75f5f34dc1b5347e0b8351032682f224, 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!1 &9216468698134937211
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2032205408854399244}
+  m_Layer: 20
+  m_Name: Binding
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2032205408854399244
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9216468698134937211}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3317128582922500549}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootBinding.prefab.meta

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

+ 142 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootBindingController.prefab

@@ -0,0 +1,142 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8625694250200680089
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1606292805419130208}
+  - component: {fileID: 6017266607273749630}
+  - component: {fileID: 949731048593540201}
+  m_Layer: 20
+  m_Name: RootBindingController
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1606292805419130208
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8625694250200680089}
+  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: 1414789766017849110}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6017266607273749630
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8625694250200680089}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c8ef756e4c264774788af959161c3c23, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  offset: 0
+  collider: {fileID: 949731048593540201}
+  controlTime: 5
+  bindingObj: {fileID: 3379020734583480684, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+  spikesObj: {fileID: 3379020734583480684, guid: d74dc08ff5e5d9c478e1c699a630d41e, type: 3}
+  playerController: {fileID: 0}
+  targetTypes: 0400000006000000
+  trigedObjs: []
+  time: 0
+  totalNum: 0
+  num: 0
+--- !u!65 &949731048593540201
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8625694250200680089}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 20, y: 25, z: 1}
+  m_Center: {x: 0, y: 10, z: 0}
+--- !u!1001 &4443532297026268883
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1606292805419130208}
+    m_Modifications:
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_RootOrder
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3379020734583480684, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_Name
+      value: RootBinding
+      objectReference: {fileID: 0}
+    - target: {fileID: 3379020734583480684, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5040162479225490407, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+      propertyPath: target
+      value: 
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+--- !u!4 &1414789766017849110 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 3317128582922500549, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+  m_PrefabInstance: {fileID: 4443532297026268883}
+  m_PrefabAsset: {fileID: 0}

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootBindingController.prefab.meta

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

+ 151 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootSpikes.prefab

@@ -0,0 +1,151 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &3379020734583480684
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3317128582922500549}
+  - component: {fileID: 4453815924347997328}
+  - component: {fileID: 5825714287022380294}
+  m_Layer: 20
+  m_Name: RootSpikes
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3317128582922500549
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3379020734583480684}
+  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: 2157804666810872605}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &4453815924347997328
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3379020734583480684}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 10, z: 1}
+  m_Center: {x: 0, y: 5, z: 0}
+--- !u!114 &5825714287022380294
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3379020734583480684}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8cd6df75862c974498b10d6b727b9c53, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  bindingObj: {fileID: 3379020734583480684, guid: 86ce86539199e66429e09a369f6ecea1, type: 3}
+  height: 10
+  stayTime: 0.5
+  target: {fileID: 0}
+  player: {fileID: 0}
+  damage: 0
+--- !u!1 &6855637659924415997
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2157804666810872605}
+  - component: {fileID: 6964723780507241472}
+  m_Layer: 20
+  m_Name: Triangle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2157804666810872605
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6855637659924415997}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 3.44, z: 0}
+  m_LocalScale: {x: 1, y: 12, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3317128582922500549}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &6964723780507241472
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6855637659924415997}
+  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: 75f5f34dc1b5347e0b8351032682f224, 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

+ 7 - 0
ActionTowerDefense/Assets/Resources/Prefab/Conduct/RootSpikes.prefab.meta

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

+ 25 - 0
ActionTowerDefense/Assets/Resources/Prefab/GameManager.prefab

@@ -135,6 +135,7 @@ MonoBehaviour:
   trueRefreshChance: []
   refreshChance: []
   damageRate: 0
+  damageScale: 0
   damage: 0
   criticalChance: 0
   regeneration: 0
@@ -147,6 +148,16 @@ MonoBehaviour:
   dashCharges: 0
   totalMp: 0
   mpRegen: 0
+  downDamage: 0
+  blowUpDamage: 0
+  fireAttributeDamage: 0
+  waterAttributeDamage: 0
+  windAttributeDamage: 0
+  thunderAttributeDamage: 0
+  flyAttributeDamage: 0
+  groundAttributeDamage: 0
+  woodAttributeDamage: 0
+  rockAttributeDamage: 0
   leveType: 0
   ratioIncrease:
   - 1
@@ -270,6 +281,20 @@ MonoBehaviour:
     - 3
     - 4
     obj: {fileID: 4234023256197139610, guid: cdf0d0226ad7cd04aa941d3bf6c919ec, type: 3}
+  rootBinding:
+    attributeTag: 8
+    sacrificeValue: 0a0000000a0000000a0000000a000000
+    power:
+    - 1
+    - 2
+    - 3
+    - 4
+    effectBonus:
+    - 1
+    - 2
+    - 3
+    - 4
+    obj: {fileID: 8625694250200680089, guid: 31ec11a95c39c1540a4b1fa181332442, type: 3}
 --- !u!114 &1880576200062196086
 MonoBehaviour:
   m_ObjectHideFlags: 0

+ 15 - 3
ActionTowerDefense/Assets/Scripts/Conduct/ConductController.cs

@@ -14,11 +14,9 @@ public class ConductController : MonoBehaviour
     private SoldierLevelRecord soldierLevelRecord;
 
     [LabelText("Æ·ÖÊ")] public int[] rarity;
+    [LabelText("Èڻ꼼")] public ConductSkills[] conductSkills;
     public float[] conversionRate;
     public int[] sacrificeValue;
-   
-    [LabelText("Èڻ꼼")] public ConductSkills[] conductSkills;
-
     public List<Photosphere> photospheres = new List<Photosphere>();
     
     private void Awake()
@@ -60,6 +58,10 @@ public class ConductController : MonoBehaviour
                     ConductManager.TornadoFan tornadoFan = conductManager.tornadoFan;
                     sacrificeValue[i] = tornadoFan.sacrificeValue[demonicRarity];
                     break;
+                case ConductSkills.RootBinding:
+                    ConductManager.RootBinding rootBinding = conductManager.rootBinding;
+                    sacrificeValue[i] = rootBinding.sacrificeValue[demonicRarity];
+                    break;
             }
         }
     }
@@ -198,6 +200,16 @@ public class ConductController : MonoBehaviour
                 tf.damage = (int)(attackDamage * tagAdd);
                 tf.Init();
                 break;
+            case ConductSkills.RootBinding:
+                ConductManager.RootBinding rootBinding = conductManager.rootBinding;
+                obj = PoolManager.Instantiate(rootBinding.obj);
+                RootBindingController rootBindingController = obj.GetComponent<RootBindingController>();
+                rootBindingController.playerController = playerController;
+                rootBindingController.totalNum = Mathf.RoundToInt(dienum * rootBinding.power[demonicRarity]);
+                tagAdd += rootBinding.effectBonus[demonicRarity] * myTreasureTag[(int)rootBinding.attributeTag - 1] / 100;
+                rootBindingController.damage = (int)(attackDamage * tagAdd);
+                rootBindingController.Init();
+                break;
         }
     }
 

+ 12 - 0
ActionTowerDefense/Assets/Scripts/Conduct/ConductManager.cs

@@ -14,6 +14,7 @@ public enum ConductSkills
     [LabelText("灵血聚合器")] SpiritBloodAggregator,
     [LabelText("游龙球")] WanderingDragonOrb,
     [LabelText("龙卷扇")] TornadoFan,
+    [LabelText("根须缠绕")] RootBinding,
     
 }
 public class ConductManager : MonoBehaviour
@@ -97,6 +98,17 @@ public class ConductManager : MonoBehaviour
     }
     [LabelText("龙卷扇")] public TornadoFan tornadoFan;
 
+    //根须缠绕
+    [Serializable]
+    public struct RootBinding
+    {
+        [LabelText("标签")] public AttributeTag attributeTag;
+        [LabelText("献祭数量")] public int[] sacrificeValue;
+        [LabelText("效果规模")] public float[] power;
+        [LabelText("效果加成(%)")] public float[] effectBonus;
+        public GameObject obj;
+    }
+    [LabelText("根须缠绕")] public RootBinding rootBinding;
     private void Awake()
     {
         if(!instance)

+ 40 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootBinding.cs

@@ -0,0 +1,40 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RootBinding : MonoBehaviour
+{
+    public float ratio;
+    public Transform binding;
+    public float speed;
+
+    public MoveCharacter target;
+    public Vector3 targetScale;
+    public float time;
+    public PlayerController player;
+    public int damage;
+    public void Init()
+    {
+        Vector3 targetPos = target.transform.position;
+        targetScale = Vector3.one;
+        targetScale.y = targetPos.y * ratio;
+        targetPos.y = 0;
+        transform.position = targetPos;
+        transform.localScale = targetScale;
+        time = 0;
+    }
+
+    public void Update()
+    {
+        time += Time.deltaTime * speed;
+        transform.localScale = new Vector3(1, Mathf.Lerp(targetScale.y, 0, time), 1);
+        target.transform.position = binding.transform.position;
+        if(time >=1)
+        {
+            AttackController.AttackMethod attackMethod = new AttackController.AttackMethod();
+            attackMethod.attackInfo = new AttackInfo();
+            target.BeHit(attackMethod, player, damage);
+            gameObject.SetActive(false);
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootBinding.cs.meta

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

+ 106 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootBindingController.cs

@@ -0,0 +1,106 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RootBindingController : MonoBehaviour
+{
+    public float offset;
+    public Collider collider;
+    public float controlTime;
+    public GameObject bindingObj;
+    public GameObject spikesObj;
+
+    public PlayerController playerController;
+    public List<TargetType> targetTypes;
+    public List<MoveCharacter> trigedObjs = new List<MoveCharacter>();
+    public float time;
+    public int totalNum;
+    public int num;
+    public int damage;
+
+    public void Init()
+    {
+        time = 0;
+        num = 0;
+        trigedObjs.Clear();
+        Vector3 pos = playerController.transform.position;
+        if (playerController.bodyTrans.localScale.x > 0)
+        {
+            pos -= new Vector3(offset, 0, 0);
+        }
+        else
+        {
+            pos += new Vector3(offset, 0, 0);
+        }
+        pos.y = 0;
+        transform.position = pos;
+        collider.enabled = true;
+    }
+    private void Update()
+    {
+        time += Time.deltaTime;
+        if(time > 0.1f)
+        {
+            collider.enabled = false;
+            for(int i = 0;i<totalNum - num; i++)
+            {
+                if (i >= trigedObjs.Count) break;
+                CreateRootSpikes(trigedObjs[i]);
+            }
+            gameObject.SetActive(false);
+        }
+    }
+    private void OnTriggerEnter(Collider other)
+    {
+        if (!other.TryGetComponent(out BeHitTrigger hitTrigger)) return;
+        MoveCharacter hitOwner = hitTrigger.owner as MoveCharacter;
+        if (hitOwner == null) return;
+        if (!TryGetTargetTypeFromTag(hitOwner.tag, out TargetType otherTargetType)) return;
+
+        if (!IsValidTargetType(targetTypes, otherTargetType)) return;
+        if (hitOwner.nowCanFly)
+        {
+            CreateRootSpikes(hitOwner);
+            num ++;
+            if(num >= totalNum)
+            {
+                gameObject.SetActive(false);
+            }
+        }
+        else
+        {
+            trigedObjs.Add(hitOwner);
+        }
+        
+
+    }
+    private HashSet<TargetType> _cachedTargetTypes;
+    private List<TargetType> _lastTargetTypes;
+
+    private bool IsValidTargetType(List<TargetType> targetTypes, TargetType checkType)
+    {
+        // 如果列表没有变化,使用缓存的HashSet
+        if (targetTypes != _lastTargetTypes)
+        {
+            _cachedTargetTypes = new HashSet<TargetType>(targetTypes);
+            _lastTargetTypes = targetTypes;
+        }
+
+        return _cachedTargetTypes.Contains(checkType);
+    }
+
+    private bool TryGetTargetTypeFromTag(string tag, out TargetType targetType)
+    {
+        return GameManager.TagToTargetTypeMap.TryGetValue(tag, out targetType);
+    }
+
+    public void CreateRootSpikes(MoveCharacter moveCharacter)
+    {
+        moveCharacter.attributeStatus.AddWeak(controlTime);
+        RootSpikes rootSpikes = PoolManager.Instantiate(spikesObj).GetComponent<RootSpikes>();
+        rootSpikes.target = moveCharacter;
+        rootSpikes.player = playerController;
+        rootSpikes.damage = damage;
+        rootSpikes.Init();
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootBindingController.cs.meta

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

+ 45 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootSpikes.cs

@@ -0,0 +1,45 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RootSpikes : MonoBehaviour
+{
+    public GameObject bindingObj;
+    public float height;
+    public float stayTime;
+
+    public MoveCharacter target;
+    public PlayerController player;
+    public int damage;
+    public float time;
+    public void Init()
+    {
+        Vector3 targetPos = target.transform.position;
+        targetPos.y = 0;
+        transform.position = targetPos;
+        if (target.transform.position.y <= height)
+        {
+            AttackController.AttackMethod attackMethod = new AttackController.AttackMethod();
+            attackMethod.attackInfo = new AttackInfo();
+            target.BeHit(attackMethod,player, damage);
+        }
+        time = 0;
+    }
+
+    public void Update()
+    {
+        time += Time.deltaTime;
+        if(time > stayTime)
+        {
+            if (target.nowCanFly)
+            {
+                RootBinding rootBinding = PoolManager.Instantiate(bindingObj).GetComponent<RootBinding>();
+                rootBinding.target = target;
+                rootBinding.player = player;
+                rootBinding.damage = damage;
+                rootBinding.Init();
+            }
+            gameObject.SetActive(false);
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Conduct/RootSpikes.cs.meta

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