Bladeren bron

塔恢复攻击

SZAND\msx_2 7 maanden geleden
bovenliggende
commit
31921809c2

+ 2 - 2
ActionTowerDefense/Assets/Animations/EnemyTower/EnemyTowerCollider.controller

@@ -7,7 +7,7 @@ AnimatorState:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Attack_summon
+  m_Name: attack_summon
   m_Speed: 1
   m_CycleOffset: 0
   m_Transitions: []
@@ -172,7 +172,7 @@ AnimatorState:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Attack_march
+  m_Name: attack_march
   m_Speed: 1
   m_CycleOffset: 0
   m_Transitions: []

+ 1 - 1
ActionTowerDefense/Assets/Animations/EnemyTower/EnemyTowerCollider_Idle.anim

@@ -36,7 +36,7 @@ AnimationClip:
     m_Level: 0
     m_CycleOffset: 0
     m_HasAdditiveReferencePose: 0
-    m_LoopTime: 0
+    m_LoopTime: 1
     m_LoopBlend: 0
     m_LoopBlendOrientation: 0
     m_LoopBlendPositionY: 0

+ 2 - 2
ActionTowerDefense/Assets/Animations/EnemyTower/EnemyTowerCollider_NotAttack.anim

@@ -7,7 +7,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: EnemyTowerCollider_NotAttack
-  serializedVersion: 6
+  serializedVersion: 7
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1
@@ -62,7 +62,7 @@ AnimationClip:
     m_Level: 0
     m_CycleOffset: 0
     m_HasAdditiveReferencePose: 0
-    m_LoopTime: 0
+    m_LoopTime: 1
     m_LoopBlend: 0
     m_LoopBlendOrientation: 0
     m_LoopBlendPositionY: 0

+ 1 - 1
ActionTowerDefense/Assets/Animations/Tower/TowerCollider_NotAttack.anim

@@ -7,7 +7,7 @@ AnimationClip:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: TowerCollider_NotAttack
-  serializedVersion: 6
+  serializedVersion: 7
   m_Legacy: 0
   m_Compressed: 0
   m_UseHighQualityCurve: 1

File diff suppressed because it is too large
+ 0 - 0
ActionTowerDefense/Assets/GameLevelEditor/maps.asset


+ 1 - 1
ActionTowerDefense/Assets/GameLevelEditor/tiles.asset

@@ -35,7 +35,7 @@ MonoBehaviour:
     type: 1
     ch: 1
     color: {r: 1, g: 0, b: 0, a: 0.39215687}
-    radius: {x: 0, y: 0}
+    radius: {x: 1, y: 1}
     name: "\u654C\u65B9\u9632\u5FA1\u5854"
     index: -1
     hasOut: 1

+ 53 - 104
ActionTowerDefense/Assets/Resources/Prefab/Tower/EnemyTower.prefab

@@ -42,7 +42,6 @@ GameObject:
   - component: {fileID: 3581793008366722164}
   - component: {fileID: 3581793008366722165}
   - component: {fileID: 3581793008366722163}
-  - component: {fileID: 3581793008366722162}
   m_Layer: 0
   m_Name: Cube
   m_TagString: Untagged
@@ -115,26 +114,6 @@ MeshRenderer:
   m_SortingLayer: 0
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
---- !u!95 &3581793008366722162
-Animator:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3581793008366722167}
-  m_Enabled: 1
-  m_Avatar: {fileID: 0}
-  m_Controller: {fileID: 0}
-  m_CullingMode: 0
-  m_UpdateMode: 0
-  m_ApplyRootMotion: 0
-  m_LinearVelocityBlending: 0
-  m_StabilizeFeet: 0
-  m_WarningMessage: 
-  m_HasTransformHierarchy: 1
-  m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
 --- !u!1 &3581793008612699017
 GameObject:
   m_ObjectHideFlags: 0
@@ -253,6 +232,7 @@ GameObject:
   - component: {fileID: 3581793008941702769}
   - component: {fileID: 3581793008941702768}
   - component: {fileID: 3581793008941702771}
+  - component: {fileID: 5387518957484100040}
   m_Layer: 0
   m_Name: EnemyTower
   m_TagString: EnemyTower
@@ -291,21 +271,26 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   mecanim: {fileID: 0}
   meshRenderer: {fileID: 3581793008366722163}
-  ani: {fileID: 3581793008366722162}
-  aniCollider: {fileID: 3581793009692002704}
+  ani: {fileID: 0}
+  totalDieKeepTime: 2
+  totalAttack_summonTime: 0
+  totalAttack_marchTime: 2
+  dieKeepTime: 0
   rb: {fileID: 3581793008941702771}
   bodyTrans: {fileID: 3581793009506298626}
   beSearchTrigger: {fileID: 3778640999066524515}
   searchTrigger: {fileID: 3581793009074591734}
-  bodyCollider: {fileID: 0}
+  bodyCollider: {fileID: 3581793009254518389}
   uiHp: {fileID: 3581793008612699030}
   beHitTrigger: {fileID: 3581793009363734221}
+  attackController: {fileID: 5387518957484100040}
+  targetCharacter: {fileID: 0}
+  attackTarget: {fileID: 0}
   state: 0
   totalHp: 20000
   hp: 0
   isDie: 0
   isRevive: 0
-  linked: 0
   canNotAddForce: 0
   canNotChangeHurt: 0
   invincibleTime: 0
@@ -315,46 +300,6 @@ MonoBehaviour:
   armor: 0
   ls: {fileID: 0}
   isInSoulTower: 0
-  totalDieKeepTime: 2
-  dieKeepTime: 0
-  canHitFly: 0
-  isNonAttack: 0
-  attackTime: 0
-  totalAttack_summonTime: 0.5
-  totalAttack_marchTime: 0.5
-  attackType: 1
-  bulletPrefab: {fileID: 7473170563405908938, guid: 1a8b22d7c1002f9468efb1362b6616a3, type: 3}
-  shootPos:
-  - {fileID: 3581793008161308374}
-  shootTrack: 1
-  Attack_summonInfos:
-  - damage: 100
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 0
-    changeHurt: 0
-    repelValue: 0
-  Attack_marchInfos:
-  - damage: 100
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 0
-    changeHurt: 0
-    repelValue: 0
-  attackTriggers: []
-  addAttackEffect: {fileID: 0}
-  armorPiercing: 0
-  curDamage1: 64000000
-  curDamage2: 64000000
-  targetTypes: 0100000003000000
-  targetCharacter: {fileID: 0}
-  attackTarget: {fileID: 0}
-  beTargetCharacter: []
-  getDistanceOffset: 0
-  isSpirit: 0
-  isTran: 0
-  pc: {fileID: 0}
-  hptp: 0
-  joint: {fileID: 0}
-  rope: {fileID: 0}
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
@@ -362,8 +307,6 @@ MonoBehaviour:
   debugAttackFrom: 0
   id: 0
   height: 8
-  haveDisappearTime: 0
-  disappearTime: 0
 --- !u!54 &3581793008941702771
 Rigidbody:
   m_ObjectHideFlags: 0
@@ -380,6 +323,49 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 56
   m_CollisionDetection: 0
+--- !u!114 &5387518957484100040
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3581793008941702770}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 565fb65a48a8ef648b3096d46e15efd9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  attackKeys: []
+  attackType: 1
+  canHitFly: 1
+  armorPiercing: 0
+  Attack_summonInfos: []
+  Attack_marchInfos:
+  - damage: 200
+    attackDir: {x: -1, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  isNonAttack: 0
+  addAttackEffect: {fileID: 0}
+  curDamage1: 
+  curDamage2: 
+  attackTrigger: {fileID: 0}
+  keyTimes: []
+  attackTime: 0
+  attackKeyCount: 0
+  nextStartKeyTime: 0
+  nextEndKeyTime: 0
+  curKeyNum: 0
+  isAttackTriggerOn: 0
+  bulletPrefab: {fileID: 7473170563405908938, guid: 1a8b22d7c1002f9468efb1362b6616a3, type: 3}
+  shootPos:
+  - {fileID: 3581793008161308374}
+  shootTrack: 1
+  shootAlwaysTrack: 1
+  targetTypes: 0100000003000000
+  beTargetCharacter: []
+  getDistanceOffset: 0
 --- !u!1 &3581793009074591723
 GameObject:
   m_ObjectHideFlags: 0
@@ -773,8 +759,6 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 3581793009692002707}
-  - component: {fileID: 3581793009692002704}
-  - component: {fileID: 3581793009692002705}
   m_Layer: 0
   m_Name: Colliders
   m_TagString: Untagged
@@ -801,41 +785,6 @@ Transform:
   m_Father: {fileID: 3581793009506298626}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!95 &3581793009692002704
-Animator:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3581793009692002706}
-  m_Enabled: 1
-  m_Avatar: {fileID: 0}
-  m_Controller: {fileID: 9100000, guid: f483455fb344fea4eab8bab31cf5d1c9, type: 2}
-  m_CullingMode: 0
-  m_UpdateMode: 1
-  m_ApplyRootMotion: 0
-  m_LinearVelocityBlending: 0
-  m_StabilizeFeet: 0
-  m_WarningMessage: 
-  m_HasTransformHierarchy: 1
-  m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
---- !u!114 &3581793009692002705
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3581793009692002706}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 492983f5b77df7e4b82cba32bc74fb94, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  owner: {fileID: 0}
-  smoke: {fileID: 0}
-  hitRate: 1
 --- !u!1 &7102644708960417302
 GameObject:
   m_ObjectHideFlags: 0

+ 54 - 103
ActionTowerDefense/Assets/Resources/Prefab/Tower/Tower.prefab

@@ -249,8 +249,6 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 6126647544260794476}
-  - component: {fileID: 6126647544260794479}
-  - component: {fileID: 6126647544260794478}
   m_Layer: 0
   m_Name: Colliders
   m_TagString: Untagged
@@ -277,41 +275,6 @@ Transform:
   m_Father: {fileID: 6126647544008014589}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!95 &6126647544260794479
-Animator:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6126647544260794477}
-  m_Enabled: 1
-  m_Avatar: {fileID: 0}
-  m_Controller: {fileID: 9100000, guid: e9b1a210bf987944e97baed4123f5b07, type: 2}
-  m_CullingMode: 0
-  m_UpdateMode: 1
-  m_ApplyRootMotion: 0
-  m_LinearVelocityBlending: 0
-  m_StabilizeFeet: 0
-  m_WarningMessage: 
-  m_HasTransformHierarchy: 1
-  m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
---- !u!114 &6126647544260794478
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6126647544260794477}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 492983f5b77df7e4b82cba32bc74fb94, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  owner: {fileID: 0}
-  smoke: {fileID: 0}
-  hitRate: 1
 --- !u!1 &6126647544809975606
 GameObject:
   m_ObjectHideFlags: 0
@@ -354,7 +317,6 @@ GameObject:
   - component: {fileID: 6126647545015389579}
   - component: {fileID: 6126647545015389578}
   - component: {fileID: 6126647545015389580}
-  - component: {fileID: 6126647545015389581}
   m_Layer: 0
   m_Name: Cube
   m_TagString: Untagged
@@ -427,26 +389,6 @@ MeshRenderer:
   m_SortingLayer: 0
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
---- !u!95 &6126647545015389581
-Animator:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6126647545015389576}
-  m_Enabled: 1
-  m_Avatar: {fileID: 0}
-  m_Controller: {fileID: 0}
-  m_CullingMode: 0
-  m_UpdateMode: 0
-  m_ApplyRootMotion: 0
-  m_LinearVelocityBlending: 0
-  m_StabilizeFeet: 0
-  m_WarningMessage: 
-  m_HasTransformHierarchy: 1
-  m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
 --- !u!1 &6126647545328450166
 GameObject:
   m_ObjectHideFlags: 0
@@ -709,6 +651,7 @@ GameObject:
   - component: {fileID: 6126647545658003342}
   - component: {fileID: 6126647545658003378}
   - component: {fileID: 6126647545658003340}
+  - component: {fileID: 3730020453662565364}
   m_Layer: 0
   m_Name: Tower
   m_TagString: Tower
@@ -747,21 +690,26 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   mecanim: {fileID: 0}
   meshRenderer: {fileID: 6126647545015389580}
-  ani: {fileID: 6126647545015389581}
-  aniCollider: {fileID: 6126647544260794479}
+  ani: {fileID: 0}
+  totalDieKeepTime: 2
+  totalAttack_summonTime: 0.5
+  totalAttack_marchTime: 0.5
+  dieKeepTime: 0
   rb: {fileID: 6126647545658003340}
   bodyTrans: {fileID: 6126647544008014589}
   beSearchTrigger: {fileID: 6745549281751514252}
   searchTrigger: {fileID: 6126647545521899017}
-  bodyCollider: {fileID: 0}
+  bodyCollider: {fileID: 6126647543755677578}
   uiHp: {fileID: 6126647545328450153}
-  beHitTrigger: {fileID: 0}
+  beHitTrigger: {fileID: 6126647543596982066}
+  attackController: {fileID: 3730020453662565364}
+  targetCharacter: {fileID: 0}
+  attackTarget: {fileID: 0}
   state: 0
   totalHp: 10000
   hp: 0
   isDie: 0
   isRevive: 0
-  linked: 0
   canNotAddForce: 0
   canNotChangeHurt: 0
   invincibleTime: 0
@@ -771,46 +719,6 @@ MonoBehaviour:
   armor: 0
   ls: {fileID: 0}
   isInSoulTower: 0
-  totalDieKeepTime: 2
-  dieKeepTime: 0
-  canHitFly: 0
-  isNonAttack: 0
-  attackTime: 0
-  totalAttack_summonTime: 0.5
-  totalAttack_marchTime: 0.5
-  attackType: 1
-  bulletPrefab: {fileID: 7473170563405908938, guid: 1a8b22d7c1002f9468efb1362b6616a3, type: 3}
-  shootPos:
-  - {fileID: 6126647544809975593}
-  shootTrack: 1
-  Attack_summonInfos:
-  - damage: 100
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 0
-    changeHurt: 0
-    repelValue: 0
-  Attack_marchInfos:
-  - damage: 100
-    attackDir: {x: -1, y: 0, z: 0}
-    force: 0
-    changeHurt: 0
-    repelValue: 0
-  attackTriggers: []
-  addAttackEffect: {fileID: 0}
-  armorPiercing: 0
-  curDamage1: 64000000
-  curDamage2: 64000000
-  targetTypes: 0400000006000000
-  targetCharacter: {fileID: 0}
-  attackTarget: {fileID: 0}
-  beTargetCharacter: []
-  getDistanceOffset: 0
-  isSpirit: 0
-  isTran: 0
-  pc: {fileID: 0}
-  hptp: 0
-  joint: {fileID: 0}
-  rope: {fileID: 0}
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
@@ -835,6 +743,49 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 56
   m_CollisionDetection: 0
+--- !u!114 &3730020453662565364
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6126647545658003341}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 565fb65a48a8ef648b3096d46e15efd9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  attackKeys: []
+  attackType: 1
+  canHitFly: 1
+  armorPiercing: 0
+  Attack_summonInfos: []
+  Attack_marchInfos:
+  - damage: 200
+    attackDir: {x: -1, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  isNonAttack: 0
+  addAttackEffect: {fileID: 0}
+  curDamage1: 
+  curDamage2: 
+  attackTrigger: {fileID: 0}
+  keyTimes: []
+  attackTime: 0
+  attackKeyCount: 0
+  nextStartKeyTime: 0
+  nextEndKeyTime: 0
+  curKeyNum: 0
+  isAttackTriggerOn: 0
+  bulletPrefab: {fileID: 7473170563405908938, guid: 1a8b22d7c1002f9468efb1362b6616a3, type: 3}
+  shootPos:
+  - {fileID: 6126647544809975593}
+  shootTrack: 1
+  shootAlwaysTrack: 1
+  targetTypes: 0400000006000000
+  beTargetCharacter: []
+  getDistanceOffset: 0
 --- !u!1 &6745549281751514254
 GameObject:
   m_ObjectHideFlags: 0

+ 4 - 0
ActionTowerDefense/Assets/Scenes/Game.unity

@@ -31063,6 +31063,10 @@ PrefabInstance:
       propertyPath: m_Name
       value: SoulTower
       objectReference: {fileID: 0}
+    - target: {fileID: 6220511700128991420, guid: dd98f16e694849044b9b84d56d30cdb1, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 6220511700128991423, guid: dd98f16e694849044b9b84d56d30cdb1, type: 3}
       propertyPath: m_RootOrder
       value: 8

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

@@ -62,9 +62,9 @@ public class AttackController : MonoBehaviour
     [Header("攻击动画")]
     public AttackTrigger attackTrigger;
     public List<float> keyTimes;                //所有的帧事件时间
-    //以下信息不在面板显示
-    [HideInInspector]
+    [DisplayOnly]
     public float attackTime;                    //攻击剩余时间
+    //以下信息不在面板显示
     [HideInInspector]
     public float attackKeyCount;                //攻击进行时间
     [HideInInspector]

+ 6 - 6
ActionTowerDefense/Assets/Scripts/EnemyCreater.cs

@@ -166,9 +166,9 @@ public class EnemyCreater : MonoBehaviour
                     enemyTower.totalHp = (int)(parameter.HP * hpRatio);
                     enemyTower.hp = enemyTower.totalHp;
 
-                    attackInfo = enemyTower.attackController.Attack_summonInfos[0];
-                    attackInfo.damage = (int)(parameter.Attack_summon * attackRatio);
-                    enemyTower.attackController.Attack_summonInfos[0] = attackInfo;
+                    attackInfo = enemyTower.attackController.Attack_marchInfos[0];
+                    attackInfo.damage = (int)(parameter.Attack_march * attackRatio);
+                    enemyTower.attackController.Attack_marchInfos[0] = attackInfo;
                     enemyTower.Init();
                 }
                 if (tower != null)
@@ -178,9 +178,9 @@ public class EnemyCreater : MonoBehaviour
                     tower.totalHp = (int)(parameter.HP * hpRatio);
                     tower.hp = tower.totalHp;
 
-                    attackInfo = tower.attackController.Attack_summonInfos[0];
-                    attackInfo.damage = (int)(parameter.Attack_summon * attackRatio);
-                    tower.attackController.Attack_summonInfos[0] = attackInfo;
+                    attackInfo = tower.attackController.Attack_marchInfos[0];
+                    attackInfo.damage = (int)(parameter.Attack_march * attackRatio);
+                    tower.attackController.Attack_marchInfos[0] = attackInfo;
                     tower.Init();
                 }
                 if (!buildingDic.ContainsKey(gameMapTile.id))

+ 14 - 13
ActionTowerDefense/Assets/Scripts/Tower/EnemyTower.cs

@@ -5,27 +5,29 @@ using TMPro;
 
 public class EnemyTower : Character
 {
+    [Header("敌方塔")]
     public int id;
     public float height = 8;
 
-    public bool haveDisappearTime; //有消失时间
-    public float disappearTime;     //消失时间
     private void Awake()
     {
         TowerMap.enemyTowers.Add(gameObject);
         Init();
     }
 
-    private void Update()
+    public void Attack_March()
     {
-        if (haveDisappearTime)
+        GameObject bulletObj = PoolManager.Instantiate(attackController.bulletPrefab);
+        Bullet bullet = bulletObj.GetComponent<Bullet>();
+        AttackInfo attackInfo = attackController.Attack_marchInfos[0];
+        Vector3 attackDir = attackInfo.attackDir.normalized;
+        if (bodyTrans.localScale.x < 0)
         {
-            disappearTime -= Time.deltaTime;
-            if(state!=CharacterState.Die &&  disappearTime < 0)
-            {
-                ChangeState(CharacterState.Die);
-            }
+            attackDir.x = -attackDir.x;
         }
+        bullet.BeShoot(this, attackController.shootPos[0].position, attackDir, attackInfo.damage,
+            attackInfo.force, attackInfo.changeHurt, attackInfo.repelValue, attackController.shootTrack,
+            attackController.shootAlwaysTrack, attackTarget ? attackTarget : null);
     }
 
     public bool GetAttack()
@@ -54,7 +56,7 @@ public class EnemyTower : Character
             case CharacterState.Idle:
                 if (isAttack)
                 {
-                    attackController.Attack_summon();
+                    ChangeState(CharacterState.Attack);
                     break;
                 }
                 break;
@@ -98,11 +100,10 @@ public class EnemyTower : Character
         switch (newState)
         {
             case CharacterState.Idle:
-                //ani.Play("idle", 0, 0);
                 rb.velocity = Vector3.zero;
-                //animalAni.SetInteger("state", (int)PlayerState.Idle);
                 break;
             case CharacterState.Attack:
+                attackController.attackTime = totalAttack_marchTime;
                 attackTarget = targetCharacter;
                 if ((attackTarget.transform.position - transform.position).x > 0
                     && bodyTrans.localScale.x > 0)
@@ -114,9 +115,9 @@ public class EnemyTower : Character
                 {
                     Turn();
                 }
+                Attack_March();
                 break;
             case CharacterState.Die:
-                ani.Play("die", 0, 0);
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
                 TowerMap.myTowers.Remove(gameObject);

+ 20 - 5
ActionTowerDefense/Assets/Scripts/Tower/Tower.cs

@@ -10,12 +10,13 @@ public class Tower : Character
     public int id;
     public bool isLockSoul;
     public float height = 8;
+
     private void Awake()
     {
         TowerMap.myTowers.Add(gameObject);
         Init();
-
     }
+
     public bool GetAttack()
     {
         if (targetCharacter != null)
@@ -30,6 +31,21 @@ public class Tower : Character
         targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true);
     }
 
+    public void Attack_March()
+    {
+        GameObject bulletObj = PoolManager.Instantiate(attackController.bulletPrefab);
+        Bullet bullet = bulletObj.GetComponent<Bullet>();
+        AttackInfo attackInfo = attackController.Attack_marchInfos[0];
+        Vector3 attackDir = attackInfo.attackDir.normalized;
+        if (bodyTrans.localScale.x < 0)
+        {
+            attackDir.x = -attackDir.x;
+        }
+        bullet.BeShoot(this, attackController.shootPos[0].position, attackDir, attackInfo.damage,
+            attackInfo.force, attackInfo.changeHurt, attackInfo.repelValue, attackController.shootTrack,
+            attackController.shootAlwaysTrack, attackTarget ? attackTarget : null);
+    }
+
     public override void OnState()
     {
         base.OnState();
@@ -42,7 +58,7 @@ public class Tower : Character
             case CharacterState.Idle:
                 if (isAttack)
                 {
-                    attackController.Attack_summon();
+                    ChangeState(CharacterState.Attack);
                     break;
                 }
                 break;
@@ -85,11 +101,10 @@ public class Tower : Character
         switch (newState)
         {
             case CharacterState.Idle:
-                //ani.Play("idle", 0, 0);
                 rb.velocity = Vector3.zero;
-                //animalAni.SetInteger("state", (int)PlayerState.Idle);
                 break;
             case CharacterState.Attack:
+                attackController.attackTime = totalAttack_marchTime;
                 attackTarget = targetCharacter;
                 if ((attackTarget.transform.position - transform.position).x > 0
                     && bodyTrans.localScale.x > 0)
@@ -101,13 +116,13 @@ public class Tower : Character
                 {
                     Turn();
                 }
+                Attack_March();
                 break;
             case CharacterState.Die:
                 if (isLockSoul)
                 {
                     GetComponentInChildren<LockSoul>().ReleaseAllSouls();
                 }
-                ani.Play("die", 0, 0);
                 isDie = true;
                 dieKeepTime = totalDieKeepTime;
                 TowerMap.myTowers.Remove(gameObject);

Some files were not shown because too many files changed in this diff