瀏覽代碼

士兵技能做了一部分(还未实现),修改了新一版的木和岩效果

HY-LSZNWIN10\Administrator 3 周之前
父節點
當前提交
91d4fbf815

+ 1 - 1
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1002.prefab

@@ -398,7 +398,7 @@ MonoBehaviour:
   isOnFire: 0
   fireStacks: 0
   exp: 1
-  tag: 0
+  tag: 2
   dieEffect: {fileID: 0}
   name: 
   baseSortingOrder: 5000

+ 17 - 13
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1007.prefab

@@ -92,10 +92,12 @@ MonoBehaviour:
   canBreakWall: 0
   wallBrealNum: 10
   isShoot: 0
-  owner: {fileID: 0}
   isSingleAttack: 1
+  isDoT: 0
+  owner: {fileID: 0}
   cantSingleAttack: 0
   trigedObjs: []
+  trigedTime: []
   attackMethod:
     attackName: 
     attackType: 0
@@ -131,7 +133,8 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0
@@ -168,6 +171,7 @@ MonoBehaviour:
   repelValue: 0
   offsetY: 1
   hitRate: 1
+  interval: 0
   isCreatedByDemonicSummon: 0
 --- !u!1 &1190225091429982147
 GameObject:
@@ -284,7 +288,8 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0
@@ -368,7 +373,8 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0
@@ -406,6 +412,7 @@ MonoBehaviour:
   isFly: 0
   decelerationRatioX: 2
   decelerationRatioY: 15
+  landingDamageFrom: {fileID: 0}
   rotateCenterHeight: 1
   startFlyAngle: 15
   flyingRotateSpeedRange: {x: 15, y: 30}
@@ -1356,7 +1363,6 @@ MonoBehaviour:
   state: 1
   totalHp: 1000
   hp: 100
-  regeneration: 0
   regenerationTime: 0
   canFly: 1
   canControlFly: 0
@@ -1422,16 +1428,12 @@ MonoBehaviour:
   heavyDamage: 0
   killer: {fileID: 0}
   isFrozen: 0
-  electrifyAttackSpeedScale: 0.6
-  electrifyMoveSpeedScale: 0.6
   isElectrify: 0
-  isPetrify: 0
-  petrifyTime: 0
-  petrifyHp: 0
+  electrifyEffect: {fileID: 0}
   isOnFire: 0
   fireStacks: 0
   exp: 10
-  tag: 0
+  tag: 2
   dieEffect: {fileID: 0}
   name: 
   baseSortingOrder: 2001
@@ -1525,7 +1527,8 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0
@@ -1592,7 +1595,8 @@ MonoBehaviour:
         force: 0
         time: 0
         haveLandingDamage: 0
-        landingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0

+ 253 - 1
ActionTowerDefense/Assets/Resources/Prefab/Meteorite.prefab

@@ -95,6 +95,7 @@ GameObject:
   - component: {fileID: 3333295921518144537}
   - component: {fileID: 3333295921518144542}
   - component: {fileID: 3333295921518144543}
+  - component: {fileID: 282985644019091727}
   m_Layer: 14
   m_Name: Meteorite
   m_TagString: Untagged
@@ -130,7 +131,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 00300902a9e8f424aaa47884866d8404, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  speed: 20
+  speed: 30
   baseDamage: 10
 --- !u!54 &3333295921518144542
 Rigidbody:
@@ -161,3 +162,254 @@ SphereCollider:
   serializedVersion: 2
   m_Radius: 0.5
   m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &282985644019091727
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3333295921518144541}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 565fb65a48a8ef648b3096d46e15efd9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  attackInterval: 4
+  addAttackEffect: {fileID: 0}
+  isAttackTriggerOn: 0
+  targetTypes: 040000000500000006000000
+  attackSummonId: 0
+  attackMarchId: 0
+  summonTime:
+  - 0.5
+  attackMethod_summon:
+  - attackName: attack_summon
+    attackType: 0
+    attackInfo:
+      attackValue: 13
+      damage: 10
+      attackDir: {x: 0, y: 0, z: 0}
+      criticalChance: 0
+      lifesteal: 0
+      effect: {fileID: 0}
+      attackEffect: 01000000
+      attackMethod_Type: 0
+      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: -1, y: 1, z: 0}
+        dirRandom: {x: 0.5, y: 0.5, z: 0}
+        force: 110
+        time: 2
+        haveLandingDamage: 1
+        landingDamageRate: 2.5
+        ControlOrder: 0
+      shotDown:
+        directionType: 0
+        dir: {x: 0, y: 0, z: 0}
+        dirRandom: {x: 0, y: 0, z: 0}
+        force: 0
+        time: 0
+        haveLandingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
+        ControlOrder: 0
+      weak:
+        time: 0
+        ControlOrder: 0
+      armorPiercing:
+        rate: 0
+      vulnerable:
+        rate: 0
+        time: 0
+      stackingWounds:
+        damage: 0
+        time: 0
+      changeDamage:
+        rate: 0
+      sustainedInjury:
+        damage: 0
+    attackTrigger: {fileID: 0}
+    needToChange: 0
+    attackDistance: 3
+    maxAttackDis: 0
+    minAttackDis: 0
+    searchMode: 0
+    canHitFly: 1
+    bulletPrefab: {fileID: 0}
+    shootPos: []
+    maxUpAngle: 0
+    maxDownAngle: 0
+    shootTrack: 0
+    shootAlwaysTrack: 0
+    skill: {fileID: 0}
+    additionalEffects: 0
+  attackMethod_march:
+  - attackName: attack_march
+    attackType: 0
+    attackInfo:
+      attackValue: 0
+      damage: 2
+      attackDir: {x: 0, y: 0, z: 0}
+      criticalChance: 0
+      lifesteal: 0
+      effect: {fileID: 0}
+      attackEffect: 
+      attackMethod_Type: 0
+      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}
+        dirRandom: {x: 0, y: 0, z: 0}
+        force: 0
+        time: 0
+        haveLandingDamage: 0
+        landingDamageRate: 0
+        ControlOrder: 0
+      shotDown:
+        directionType: 0
+        dir: {x: 0, y: 0, z: 0}
+        dirRandom: {x: 0, y: 0, z: 0}
+        force: 0
+        time: 0
+        haveLandingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
+        ControlOrder: 0
+      weak:
+        time: 0
+        ControlOrder: 0
+      armorPiercing:
+        rate: 0
+      vulnerable:
+        rate: 0
+        time: 0
+      stackingWounds:
+        damage: 0
+        time: 0
+      changeDamage:
+        rate: 0
+      sustainedInjury:
+        damage: 0
+    attackTrigger: {fileID: 0}
+    needToChange: 0
+    attackDistance: 3
+    maxAttackDis: 0
+    minAttackDis: 0
+    searchMode: 0
+    canHitFly: 1
+    bulletPrefab: {fileID: 0}
+    shootPos: []
+    maxUpAngle: 0
+    maxDownAngle: 0
+    shootTrack: 0
+    shootAlwaysTrack: 0
+    skill: {fileID: 0}
+    additionalEffects: 0
+  curAttackMethod:
+    attackName: 
+    attackType: 0
+    attackInfo:
+      attackValue: 0
+      damage: 0
+      attackDir: {x: 0, y: 0, z: 0}
+      criticalChance: 0
+      lifesteal: 0
+      effect: {fileID: 0}
+      attackEffect: 
+      attackMethod_Type: 0
+      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}
+        dirRandom: {x: 0, y: 0, z: 0}
+        force: 0
+        time: 0
+        haveLandingDamage: 0
+        landingDamageRate: 0
+        ControlOrder: 0
+      shotDown:
+        directionType: 0
+        dir: {x: 0, y: 0, z: 0}
+        dirRandom: {x: 0, y: 0, z: 0}
+        force: 0
+        time: 0
+        haveLandingDamage: 0
+        landingDamageRate: 0
+        minLandingDamage: 0
+        ControlOrder: 0
+      weak:
+        time: 0
+        ControlOrder: 0
+      armorPiercing:
+        rate: 0
+      vulnerable:
+        rate: 0
+        time: 0
+      stackingWounds:
+        damage: 0
+        time: 0
+      changeDamage:
+        rate: 0
+      sustainedInjury:
+        damage: 0
+    attackTrigger: {fileID: 0}
+    needToChange: 0
+    attackDistance: 0
+    maxAttackDis: 0
+    minAttackDis: 0
+    searchMode: 0
+    canHitFly: 0
+    bulletPrefab: {fileID: 0}
+    shootPos: []
+    maxUpAngle: 0
+    maxDownAngle: 0
+    shootTrack: 0
+    shootAlwaysTrack: 0
+    skill: {fileID: 0}
+    additionalEffects: 0
+  attackKeys:
+  - aniName: attack_march
+    keys:
+    - attackType: 0
+      startKeyName: attack_on
+      startKeyTime: 1.4000001
+      endType: 1
+      endKeyName: attack_off
+      endKeyTime: 1.6000001
+    totalTime: 4
+  - aniName: attack_summon
+    keys:
+    - attackType: 0
+      startKeyName: attack_on
+      startKeyTime: 0
+      endType: 1
+      endKeyName: attack_off
+      endKeyTime: 0.26666668
+    totalTime: 0.6666667
+  keyTimes: []
+  attackTime: 0
+  attackKeyCount: 0
+  nextStartKeyTime: 0
+  nextEndKeyTime: 0
+  curKeyNum: 0
+  beTargetCharacter: []
+  lifesteal: 1

+ 84 - 13
ActionTowerDefense/Assets/Resources/Prefab/MySoldier/Demonic_Giant.prefab

@@ -235,7 +235,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 8b2c8973c65adf4448805aa906f6ad29, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  owner: {fileID: 5440846222648032767}
+  owner: {fileID: 0}
   attackerID: 0
   curX: 0
 --- !u!114 &8754430353800587234
@@ -492,7 +492,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 8ff1eeae99d9b8142acd628550a50e26, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  owner: {fileID: 5440846222648032767}
+  owner: {fileID: 0}
 --- !u!1 &4543619153787591511
 GameObject:
   m_ObjectHideFlags: 0
@@ -669,11 +669,12 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 5440846222648032754}
-  - component: {fileID: 5440846222648032767}
+  - component: {fileID: 1142699015755696070}
   - component: {fileID: 5440846222648032765}
   - component: {fileID: 7709923136427189747}
   - component: {fileID: 802636448221205106}
   - component: {fileID: 1496688819680216204}
+  - component: {fileID: 4698975884413946318}
   m_Layer: 7
   m_Name: Demonic_Giant
   m_TagString: Demonic
@@ -696,10 +697,11 @@ Transform:
   - {fileID: 6459001683917408033}
   - {fileID: 770599430276839403}
   - {fileID: 3103190932458336017}
+  - {fileID: 4234186424859525906}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &5440846222648032767
+--- !u!114 &1142699015755696070
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -708,7 +710,7 @@ MonoBehaviour:
   m_GameObject: {fileID: 5440846222648032759}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: c1bedfb340186164dbac1499b49b879e, type: 3}
+  m_Script: {fileID: 11500000, guid: d01199fa82864b249b73279c31baa2e1, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   rb: {fileID: 5440846222648032765}
@@ -723,7 +725,7 @@ MonoBehaviour:
   mecanim: {fileID: 7573527827155227431}
   meshRenderer: {fileID: 0}
   ani: {fileID: 3333436509305836838}
-  totalDieKeepTime: 2.0666668
+  totalDieKeepTime: 2.066667
   showInjuryNum: 0
   injuryNumText: {fileID: 6467251191553420251, guid: 9b37289f93ea76745ab2cefb79a93e3c, type: 3}
   injuryNumTextSummon: {fileID: 6467251191553420251, guid: 71b4c570c9e403d429846b71878a20c4, type: 3}
@@ -780,10 +782,8 @@ MonoBehaviour:
   spinee: {fileID: 0}
   mesh: {fileID: 0}
   mats: []
-  outlineMats:
-  - {fileID: 2100000, guid: a30e0c3d2b8bf4e43a76fc2d5b3884cd, type: 2}
-  outline1Mats:
-  - {fileID: 2100000, guid: 82f4327af6aa844459ee45d1f72de829, type: 2}
+  outlineMats: []
+  outline1Mats: []
   moveSpeed: 2
   moveSpeedScale: 1
   isDamageReduction: 0
@@ -810,7 +810,7 @@ MonoBehaviour:
   fireStacks: 0
   searchState: 0
   bigSoldier: {fileID: 1496688819680216204}
-  dragonTrigger: {fileID: 0}
+  dragonTrigger: {fileID: 7729941002223262554}
   myName: "\u76FE\u7532\u5175"
   summonEndToDie: 0
   canSizeChange: 0
@@ -833,6 +833,7 @@ MonoBehaviour:
   dropSoulMax: 5
   dropSoulMin: 5
   dropSoulAngle: 60
+  bc: {fileID: 0}
 --- !u!54 &5440846222648032765
 Rigidbody:
   m_ObjectHideFlags: 0
@@ -1125,7 +1126,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 8562f76ec9f88004b9eade117489ef49, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  demonic: {fileID: 5440846222648032767}
+  demonic: {fileID: 1142699015755696070}
   stageSize:
   - 1.5
   - 2
@@ -1141,6 +1142,18 @@ MonoBehaviour:
   nowSize: 0
   changeSizeSpeed: 0.2
   baseSortingOrder: 100
+--- !u!114 &4698975884413946318
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5440846222648032759}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2d4cd446e688d604bbb660bd0354fa2c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &6139679835290116115
 GameObject:
   m_ObjectHideFlags: 0
@@ -1186,7 +1199,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 21f006d2c845e2e43bce70ea7a2d8dcc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  owner: {fileID: 5440846222648032767}
+  owner: {fileID: 0}
   trigDemonicList: []
   trigTowerList: []
   trigPlayerList: []
@@ -1318,6 +1331,64 @@ MonoBehaviour:
   imgHp: {fileID: 891910447640254832}
   pc: {fileID: 0}
   points: []
+--- !u!1 &6388486695562442069
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4234186424859525906}
+  - component: {fileID: 1764052328248983656}
+  - component: {fileID: 867647653288613018}
+  m_Layer: 0
+  m_Name: Buff Aura
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4234186424859525906
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6388486695562442069}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.5633472, y: 2.5797377, z: 0}
+  m_LocalScale: {x: 15, y: 15, z: 15}
+  m_ConstrainProportionsScale: 1
+  m_Children: []
+  m_Father: {fileID: 5440846222648032754}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &1764052328248983656
+SphereCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6388486695562442069}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Radius: 0.5
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &867647653288613018
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6388486695562442069}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5fc5e4663fc21134b9f0c95468e5f3e9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &7208291223413765209
 GameObject:
   m_ObjectHideFlags: 0

+ 4 - 2
ActionTowerDefense/Assets/Resources/Prefab/StoneStatue.prefab

@@ -27,8 +27,8 @@ Transform:
   m_GameObject: {fileID: 3693514606479462441}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 168.6, y: -1.2, z: 0.00004370143}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
+  m_LocalScale: {x: 0.6, y: 0.6, z: 0.6}
+  m_ConstrainProportionsScale: 1
   m_Children:
   - {fileID: 3693514607685348856}
   - {fileID: 1252861290751352071}
@@ -275,6 +275,7 @@ MonoBehaviour:
         time: 0
         haveLandingDamage: 0
         landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0
@@ -342,6 +343,7 @@ MonoBehaviour:
         time: 0
         haveLandingDamage: 0
         landingDamageRate: 0
+        minLandingDamage: 0
         ControlOrder: 0
       weak:
         time: 0

+ 162 - 0
ActionTowerDefense/Assets/Scripts/BuffAura.cs

@@ -0,0 +1,162 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BuffAura : MonoBehaviour
+{
+    public BuffBase buff;
+    private List<BeSearchTrigger> buffDemonic;
+
+    private void OnEnable()
+    {
+        buffDemonic = new List<BeSearchTrigger>();
+    }
+
+    private void OnTriggerEnter(Collider other)
+    {
+        if(other.GetComponent<BeSearchTrigger>() != null)
+        {
+            BeSearchTrigger beSearchTrigger = other.GetComponent<BeSearchTrigger>();
+            if(beSearchTrigger.owner is Demonic && !buffDemonic.Contains(beSearchTrigger))
+            {
+                buffDemonic.Add(beSearchTrigger);
+            }
+        }
+    }
+
+    private void OnTriggerExit(Collider other)
+    {
+        if (other.GetComponent<BeSearchTrigger>() != null)
+        {
+            BeSearchTrigger beSearchTrigger = other.GetComponent<BeSearchTrigger>();
+            if (beSearchTrigger.owner is Demonic && buffDemonic.Contains(beSearchTrigger))
+            {
+                buffDemonic.Remove(beSearchTrigger);
+            }
+        }
+    }
+}
+
+
+public class BuffBase
+{
+    public string buffName;
+    public int value;
+    public AttributeType buffType;
+
+    public void AddBuff(Demonic demonic)
+    {
+        switch (buffType)
+        {
+            case AttributeType.Armor:
+                demonic.attributeStatus.resistances.armor += value;
+                break;
+            case AttributeType.CriticalChance:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.criticalChance += value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.criticalChance += value;
+                }
+                break;
+            case AttributeType.Damage:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.damage += value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.damage += value;
+                }
+                break;
+            case AttributeType.DamageScale:
+                GameManager.instance.demonicAttributes[demonic.id].ownDamageScale += value;
+                break;
+            case AttributeType.Dodge:
+                demonic.attributeStatus.resistances.dodge += value;
+                break;
+            case AttributeType.Lifesteal:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.lifesteal += value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.lifesteal += value;
+                }
+                break;
+            case AttributeType.Regeneration:
+                demonic.regeneration += value;
+                break;
+            case AttributeType.Hp:
+                demonic.totalHp += value;
+                demonic.hp += value;
+                break;
+        }
+    }
+    public void RemoveBuff(Demonic demonic)
+    {
+        switch (buffType)
+        {
+            case AttributeType.Armor:
+                demonic.attributeStatus.resistances.armor -= value;
+                break;
+            case AttributeType.CriticalChance:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.criticalChance -= value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.criticalChance -= value;
+                }
+                break;
+            case AttributeType.Damage:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.damage -= value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.damage -= value;
+                }
+                break;
+            case AttributeType.DamageScale:
+                GameManager.instance.demonicAttributes[demonic.id].ownDamageScale -= value;
+                break;
+            case AttributeType.Dodge:
+                demonic.attributeStatus.resistances.dodge -= value;
+                break;
+            case AttributeType.Lifesteal:
+                for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+                    attackInfo.lifesteal -= value;
+                }
+                for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+                {
+                    AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+                    attackInfo.lifesteal -= value;
+                }
+                break;
+            case AttributeType.Regeneration:
+                demonic.regeneration -= value;
+                break;
+            case AttributeType.Hp:
+                demonic.totalHp -= value;
+                break;
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/BuffAura.cs.meta

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

+ 13 - 0
ActionTowerDefense/Assets/Scripts/BuffController.cs

@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BuffController : MonoBehaviour
+{
+    public List<BuffBase> buffList;
+
+    private void OnEnable()
+    {
+        buffList = new List<BuffBase>();
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/BuffController.cs.meta

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

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Characters/AttributeStatus.cs

@@ -323,7 +323,7 @@ public class AttributeStatus : MonoBehaviour
                             {
                                 if (attackMethod.attackInfo.blowUp.haveLandingDamage)
                                 {
-                                    landingDamage = (int)(Mathf.Abs(transform.position.x - startFlyPos.x) * attackMethod.attackInfo.blowUp.landingDamageRate) + GameManager.instance.blowUpDamage;
+                                    landingDamage = (int)(Mathf.Abs(transform.position.x - startFlyPos.x) * attackMethod.attackInfo.blowUp.landingDamageRate)/* + GameManager.instance.blowUpDamage*/;
                                     if (landingDamage > 0)
                                     {
                                         character.BeHit(attackMethod, landingDamageFrom, landingDamage);
@@ -335,7 +335,7 @@ public class AttributeStatus : MonoBehaviour
                                 AttackInfo.ShotDown shotDown = attackMethod.attackInfo.shotDown;
                                 if (shotDown.haveLandingDamage)
                                 {
-                                    landingDamage = (int)(Mathf.Abs(transform.position.y - startFlyPos.y) * shotDown.landingDamageRate) + GameManager.instance.downDamage;
+                                    landingDamage = (int)(Mathf.Abs(transform.position.y - startFlyPos.y) * shotDown.landingDamageRate) /*+ GameManager.instance.downDamage*/;
                                     landingDamage = Mathf.Clamp(landingDamage, shotDown.minLandingDamage, landingDamage);
                                     if (landingDamage > 0)
                                     {

+ 8 - 3
ActionTowerDefense/Assets/Scripts/Characters/Character.cs

@@ -297,7 +297,7 @@ public class Character : MonoBehaviour
         }
         if(attackFrom.CompareTag("Demonic") || attackFrom.CompareTag("Player"))
         {
-            damageData = CalculateFinalDamage(damageData);
+            damageData = CalculateFinalDamage(damageData,attackFrom);
         }
         hp -= damageData;
 
@@ -412,8 +412,13 @@ public class Character : MonoBehaviour
         obj.SetActive(true);
     }
 
-    public int CalculateFinalDamage(int baseDamage)
+    public int CalculateFinalDamage(int baseDamage,Character attackFrom = null)
     {
-        return (int)(baseDamage * (1 + GameManager.instance.damageScale / 100f));
+        if (attackFrom == null || !(attackFrom is Demonic)) return (int)(baseDamage * (1 + GameManager.instance.damageScale / 100f));
+        else 
+        {
+            Demonic demonic = attackFrom as Demonic;
+            return (int)(baseDamage * (1 + (GameManager.instance.damageScale + GameManager.instance.demonicAttributes[demonic.id].ownDamageScale) / 100f));
+        }
     }
 }

+ 25 - 11
ActionTowerDefense/Assets/Scripts/Characters/Demonic.cs

@@ -50,12 +50,13 @@ public class Demonic : MoveCharacter
     public int dropSoulMax = 3;
     public int dropSoulMin = 1;
     public float dropSoulAngle = 60f;
-    
 
-    private void OnDisable()
-    {
-        
-    }
+    private AttackController initAc;
+    private int initRegeneration;
+    private int initArmor;
+    private int initDodge;
+
+    private BuffController bc;
 
     public override void FixedUpdate()
     {
@@ -819,12 +820,6 @@ public class Demonic : MoveCharacter
         attackController.Attack_summon();
         invincibleTime = attackController.attackTime;
         attackTarget = targetCharacter;
-        //if(soldierType == SoldierType.shield)
-        //{
-        //    GameObject obj = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/Meteorite"));
-        //    int faceDir = bodyTrans.localScale.x >= 0 ? 1 : -1;
-        //    obj.GetComponent<Meteorite>().Init(transform.position + Vector3.left * faceDir * 3);
-        //}
     }
 
     public virtual void Attack_march()
@@ -867,6 +862,25 @@ public class Demonic : MoveCharacter
             soul.Burst(dir * soulStartSpeed);
         }
     }
+
+    public override void Init()
+    {
+        base.Init();
+        attackController = initAc;
+        regeneration = initRegeneration;
+        attributeStatus.resistances.dodge = initDodge;
+        attributeStatus.resistances.armor = initArmor;
+    }
+
+    public override void Awake()
+    {
+        base.Awake();
+        initAc = attackController;
+        initRegeneration = regeneration;
+        initDodge = attributeStatus.resistances.dodge;
+        initArmor = attributeStatus.resistances.armor;
+        bc = GetComponent<BuffController>();
+    }
 }
 
 [System.Flags]

+ 30 - 0
ActionTowerDefense/Assets/Scripts/Characters/DemonicGiant.cs

@@ -0,0 +1,30 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class DemonicGiant : Demonic
+{
+    public BuffController bc;
+
+
+
+    public override void Attack_summon()
+    {
+        base.Attack_summon();
+        //if (soldierType == SoldierType.shield)
+        //{
+        //    GameObject obj = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/Meteorite"));
+        //    int faceDir = bodyTrans.localScale.x >= 0 ? 1 : -1;
+        //    obj.GetComponent<Meteorite>().Init(transform.position + Vector3.left * faceDir * 3, this);
+        //}
+    }
+
+    
+}
+
+public class DemonicSkill
+{
+    public string skillName;
+    public string[] skillDescription;
+
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Characters/DemonicGiant.cs.meta

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

+ 18 - 8
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -675,16 +675,26 @@ public class Enemy : MoveCharacter
                     {
                         StoneStatue stoneStatue = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/StoneStatue"), transform.position).GetComponentInChildren<StoneStatue>();
                         GameManager.instance.player.rebornSkills.Add(stoneStatue);
+                        if(tag == EnemyTag.Tank)
+                        {
+                            stoneStatue.bulletCount = 6;
+                            stoneStatue.transform.parent.localScale = Vector3.one * 1.5f;
+                        }
+                        else
+                        {
+                            stoneStatue.bulletCount = 3;
+                            stoneStatue.transform.parent.localScale = Vector3.one * 0.8f;
+                        }
                     }
                 }
-                if (GameManager.instance.isWoodEnable)
-                {
-                    int randomInt = Random.Range(0, 100);
-                    if (randomInt < GameManager.instance.woodProbability + GameManager.instance.myTreasuresTag[7] * GameManager.instance.woodLabelEffectRatio)
-                    {
-                        PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/SoulFlower"), transform.position).GetComponent<SoulFlower>().Init(false);
-                    }
-                }
+                //if (GameManager.instance.isWoodEnable)
+                //{
+                //    int randomInt = Random.Range(0, 100);
+                //    if (randomInt < GameManager.instance.woodProbability + GameManager.instance.myTreasuresTag[7] * GameManager.instance.woodLabelEffectRatio)
+                //    {
+                //        PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/SoulFlower"), transform.position).GetComponent<SoulFlower>().Init(false);
+                //    }
+                //}
                 break;
             default:
                 break;

+ 4 - 0
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -322,6 +322,10 @@ public class MoveCharacter : Character
         {
             damageData = damage;
         }
+        if (attackFrom.CompareTag("Demonic") || attackFrom.CompareTag("Player"))
+        {
+            damageData = CalculateFinalDamage(damageData, attackFrom);
+        }
         int armorRate = attributeStatus.resistances.armor;
         bool haveStackingWords = false;
         if (attackInfo.attackEffect != null && attackInfo.attackEffect.Count > 0)

+ 14 - 5
ActionTowerDefense/Assets/Scripts/Characters/PlayerController.cs

@@ -144,7 +144,7 @@ public class PlayerController : MoveCharacter
     public int dienum;
 
     [Header("士兵复活点位")] [ShowInInspector] public List<StoneStatue> rebornSkills = new List<StoneStatue>();
-    [Header("死亡士兵统计")] [ShowInInspector] public List<DeadDemonicInformation> deadDemonicList;
+    [Header("死亡士兵统计")] [ShowInInspector] public List<DeadDemonicInformation> deadDemonicList = new List<DeadDemonicInformation>();
     
     public override int regeneration
     {
@@ -1598,6 +1598,14 @@ public class PlayerController : MoveCharacter
     public Demonic CreateDemonic(int id)
     {
         Demonic demonic = InitDemonic(id);
+        if (GameManager.instance.isWoodEnable)
+        {
+            int randomInt = Random.Range(0, 100);
+            if (randomInt < GameManager.instance.woodProbability + GameManager.instance.myTreasuresTag[7] * GameManager.instance.woodLabelEffectRatio)
+            {
+                PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/SoulFlower"), demonic.transform.position + Vector3.up * 2, Quaternion.identity, demonic.transform).GetComponent<SoulFlower>().Init(true);
+            }
+        }
         if (!demonicDic.ContainsKey(id))
         {
             demonicDic.Add(id, new List<Demonic>());
@@ -1614,12 +1622,13 @@ public class PlayerController : MoveCharacter
     {
         GameObject demonicObj = PoolManager.Instantiate(demonicPrefabs[id]);
         Demonic demonic = demonicObj.GetComponent<Demonic>();
+        demonic.Init();
         slr.SoldierAddLevelBuff(demonic);
         AttackController attackController = demonic.attackController;
         for (int i = 0; i < attackController.attackMethod_summon.Length; i++)
         {
-            AttackInfo attackInfo = attackController.attackMethod_summon[i].attackInfo; 
-            attackInfo.damage = (int) ((attackInfo.damage + gameManager.damage) * (gameManager.damageScale + 100f) / 100);
+            AttackInfo attackInfo = attackController.attackMethod_summon[i].attackInfo;
+            attackInfo.damage += gameManager.damage;
             attackInfo.criticalChance = gameManager.criticalChance;
             attackInfo.lifesteal = gameManager.lifesteal;
         }
@@ -1635,7 +1644,7 @@ public class PlayerController : MoveCharacter
             for (int i = 0; i < attackController.attackMethod_summon.Length; i++)
             {
                 AttackInfo attackInfo = attackController.attackMethod_summon[i].attackInfo;
-                attackInfo.damage += (int)(attackInfo.damage * demonicDic[0].Count *(GameManager.instance.attackRate + GameManager.instance.myTreasuresTag[0] * GameManager.instance.skyLabelEffectRatio));
+                attackInfo.damage += (int)(attackInfo.damage * demonicDic[0].Count * (GameManager.instance.attackRate + GameManager.instance.myTreasuresTag[0] * GameManager.instance.skyLabelEffectRatio));
                 //Debug.Log("飞行兵的数量是:" + demonicDic[0].Count + ",增加的起手式伤害为" + (int)(attackInfo.damage * demonicDic[0].Count * GameManager.instance.attackRate));
             }
             for (int i = 0; i < attackController.attackMethod_march.Length; i++)
@@ -1683,8 +1692,8 @@ public class PlayerController : MoveCharacter
         {
             demonic.flyHeight = demonic.transform.position.y;
         }
+        GameManager.instance.demonicAttributes[demonic.id].AddOwnAttributes(demonic);
         demonic.player = this;
-        demonic.Init();
         int order = demonicPrefabs[id].GetComponent<Demonic>().baseSortingOrder + demonicDic[demonic.id].Count;
         demonic.SetSortingOrder(order);
         return demonic;

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/StoneStatue.cs

@@ -140,7 +140,7 @@ public class StoneStatue:MonoBehaviour
         Bullet bullet = bulletObj.GetComponent<Bullet>();
         if (bullet != null)
         {
-            ac.attackMethod_march[0].attackInfo.damage = (int)(attackFrom.attackController.attackMethod_summon[0].attackInfo.damage * damageRate);
+            ac.attackMethod_march[0].attackInfo.damage = (int)(attackFrom.attackController.attackMethod_summon[0].attackInfo.damage);
             bullet.BeShoot(attackFrom, transform.position, direction,false,false,null, ac.attackMethod_march[0]);
         }
 

+ 107 - 8
ActionTowerDefense/Assets/Scripts/GameManager.cs

@@ -49,6 +49,12 @@ public enum TargetType
 public class GameManager : MonoBehaviour
 {
     public static GameManager instance;
+    [ShowInInspector]public Dictionary<int, DemonicAttributes> demonicAttributes = new Dictionary<int, DemonicAttributes>
+    {
+        {0,new DemonicAttributes() },
+        {1,new DemonicAttributes() },
+        {2,new DemonicAttributes() }
+    };
 
     [FoldoutGroup("组件", order: -1)] public UIHP p1uiHP;
     [FoldoutGroup("组件")] public UIHP p1uiMP;
@@ -185,8 +191,8 @@ public class GameManager : MonoBehaviour
     [FoldoutGroup("Rogue")] [LabelText("蓝量")] public int totalMp;
     [FoldoutGroup("Rogue")] [LabelText("回蓝速度")] public int mpRegen;
 
-    [FoldoutGroup("Rogue")] [LabelText("击落伤害")] public int downDamage;
-    [FoldoutGroup("Rogue")] [LabelText("击飞伤害")] public int blowUpDamage;
+    //[FoldoutGroup("Rogue")] [LabelText("击落伤害")] public int downDamage;
+    //[FoldoutGroup("Rogue")] [LabelText("击飞伤害")] public int blowUpDamage;
 
     public LeveType leveType;
     [LabelText("下一关倍率增幅")] public List<float> ratioIncrease = new List<float> { 0.4f, 1.6f, -0.8f };
@@ -407,31 +413,63 @@ public class GameManager : MonoBehaviour
             {
                 case "伤害加成":
                     damageScale += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownDamage += (int)(data * demonicAttribute.damageGetScale);
+                    }
                     break;
                 case "伤害":
                     damage += (int)data;
+                    foreach(DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownDamage += (int)(data * demonicAttribute.damageGetScale);
+                    }
                     break;
                 case "暴击率":
                     criticalChance += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownCriticalChance += (int)(data * demonicAttribute.criticalChanceGetScale);
+                    }
                     break;
                 case "回血":
                     regeneration += (int)data;
                     //player.regeneration += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownRegeneration += (int)(data * demonicAttribute.regenerationGetScale);
+                    }
                     break;
                 case "吸血":
                     lifesteal += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownLifesteal += (int)(data * demonicAttribute.lifestealGetScale);
+                    }
                     break;
                 case "护甲":
                     armor += (int)data;
                     player.attributeStatus.resistances.armor += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownArmor += (int)(data * demonicAttribute.armorGetScale);
+                    }
                     break;
                 case "闪避":
                     dodge += (int)data;
                     player.attributeStatus.resistances.dodge += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownDodge += (int)(data * demonicAttribute.dodgeGetScale);
+                    }
                     break;
                 case "血量上限":
                     totalHp += (int)data;
                     player.totalHp += (int)data;
+                    foreach (DemonicAttributes demonicAttribute in demonicAttributes.Values)
+                    {
+                        demonicAttribute.ownHp += (int)(data * demonicAttribute.hpGetScale);
+                    }
                     break;
                 case "金币获得增加":
                     increasedGoldGain += (int)data;
@@ -463,12 +501,12 @@ public class GameManager : MonoBehaviour
                     mpRegen += (int)data;
                     //player.mpReplySpeed += (int)data;
                     break;
-                case "击落伤害":
-                    downDamage += (int)data;
-                    break;
-                case "击飞伤害":
-                    blowUpDamage += (int)data;
-                    break;
+                //case "击落伤害":
+                //    downDamage += (int)data;
+                //    break;
+                //case "击飞伤害":
+                //    blowUpDamage += (int)data;
+                //    break;
                 default:
                     Debug.LogError($"宝物配置出错,不存在词条【{treasure.type[i]}】");
                     break;
@@ -496,3 +534,64 @@ public class GameManager : MonoBehaviour
         trueRefreshChance.Add(refreshChance[3]);
     }
 }
+
+public class DemonicAttributes
+{
+    public float damageScaleGetScale = 0f;
+    public float damageGetScale = 0f;
+    public float criticalChanceGetScale = 0f;
+    public float regenerationGetScale = 0f;
+    public float lifestealGetScale = 0f;
+    public float armorGetScale = 0f;
+    public float dodgeGetScale = 0f;
+    public float hpGetScale = 0f;
+
+    public int ownDamageScale;
+    public int ownDamage;
+    public int ownCriticalChance;
+    public int ownRegeneration;
+    public int ownLifesteal;
+    public int ownArmor;
+    public int ownDodge;
+    public int ownHp;
+
+    public DemonicAttributes()
+    {
+
+    }
+
+    public void AddOwnAttributes(Demonic demonic)
+    {
+        for (int i = 0; i < demonic.attackController.attackMethod_summon.Length; i++)
+        {
+            AttackInfo attackInfo = demonic.attackController.attackMethod_summon[i].attackInfo;
+            attackInfo.damage += ownDamage;
+            attackInfo.criticalChance += ownCriticalChance;
+            attackInfo.lifesteal += ownLifesteal;
+        }
+        for (int i = 0; i < demonic.attackController.attackMethod_march.Length; i++)
+        {
+            AttackInfo attackInfo = demonic.attackController.attackMethod_march[i].attackInfo;
+            attackInfo.damage += ownDamage;
+            attackInfo.criticalChance += ownCriticalChance;
+            attackInfo.lifesteal += ownLifesteal;
+        }
+        demonic.regeneration += ownRegeneration;
+        demonic.attributeStatus.resistances.armor += ownArmor;
+        demonic.attributeStatus.resistances.dodge += ownDodge;
+        demonic.totalHp += ownHp;
+        demonic.hp = demonic.totalHp;
+    }
+}
+
+public enum AttributeType
+{
+    DamageScale,
+    Damage,
+    CriticalChance,
+    Regeneration,
+    Lifesteal,
+    Armor,
+    Dodge,
+    Hp,
+}

+ 6 - 2
ActionTowerDefense/Assets/Scripts/Meteorite.cs

@@ -4,6 +4,8 @@ using UnityEngine;
 
 public class Meteorite : MonoBehaviour
 {
+    private AttackController ac;
+    private Character owner;
     private Vector3 attackDir;
     private Rigidbody rb;
     public float speed;
@@ -12,10 +14,12 @@ public class Meteorite : MonoBehaviour
     private void Awake()
     {
         rb = GetComponent<Rigidbody>();
+        ac = GetComponent<AttackController>();
     }
 
-    public void Init(Vector3 targetPos)
+    public void Init(Vector3 targetPos,Character _owner)
     {
+        owner = _owner;
         transform.position = CalculateSpawnPosition(targetPos);
         rb.velocity = speed * attackDir;
         damage = baseDamage + (int)((0.1f * GameManager.instance.armor + GameManager.instance.myTreasuresTag[3]) * baseDamage);
@@ -28,7 +32,7 @@ public class Meteorite : MonoBehaviour
         {
             if(target.owner is Enemy)
             {
-                target.BeHit(damage);
+                target.BeHit(ac.attackMethod_summon[0], owner);
                 Debug.Log("ÔÉʯÔì³ÉÉ˺¦");
             }
         }

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

@@ -56,7 +56,7 @@ public class SoulFlower : MonoBehaviour
             DropSouls();
             dropTimer = Time.time;
         }
-        if (Time.time - exitTimer > exitTime) gameObject.SetActive(false);
+        if (Time.time - exitTimer > exitTime && !isDistoryOnDisable) gameObject.SetActive(false);
     }
     public void DropSouls()
     {