浏览代码

玉门关冲击波

SZAND\msx_2 1 年之前
父节点
当前提交
c56ecc1624

+ 152 - 4
ActionTowerDefense/Assets/Resources/Prefab/Boss/YuMenGuan/Boss_YuMenGuan.prefab

@@ -1,5 +1,36 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &331477567169611592
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2777487973017097761}
+  m_Layer: 16
+  m_Name: wavePos1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2777487973017097761
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 331477567169611592}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.96, y: 3.2, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4299406463284535332}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &363643232214249958
 GameObject:
   m_ObjectHideFlags: 0
@@ -34,6 +65,37 @@ Transform:
   m_Father: {fileID: 6459001683917408033}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &434215870852260685
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7836455898961708306}
+  m_Layer: 16
+  m_Name: wavePos2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7836455898961708306
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 434215870852260685}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 1.85, y: 3.2, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4299406463284535332}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &562703878886912793
 GameObject:
   m_ObjectHideFlags: 0
@@ -253,6 +315,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &650183981426157255
@@ -287,6 +350,7 @@ Transform:
   - {fileID: 901824162977467732}
   - {fileID: 4761705200386125029}
   - {fileID: 1937861198385915689}
+  - {fileID: 4299406463284535332}
   m_Father: {fileID: 5440846222648032754}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -475,8 +539,42 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
+--- !u!1 &981611957393653423
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4299406463284535332}
+  m_Layer: 16
+  m_Name: Attack
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4299406463284535332
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 981611957393653423}
+  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: 2777487973017097761}
+  - {fileID: 7836455898961708306}
+  m_Father: {fileID: 6459001683917408033}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1050641803542220902
 GameObject:
   m_ObjectHideFlags: 0
@@ -694,6 +792,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &4543619153787591511
@@ -930,7 +1029,7 @@ MonoBehaviour:
   searchTrigger: {fileID: 2932762729738363159}
   bodyCollider: {fileID: 4543619153787591511}
   uiHp: {fileID: 478072938412589135}
-  state: 0
+  state: 6
   totalHp: 100
   hp: 0
   isDie: 0
@@ -966,6 +1065,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   matState: 1
   spinee: {fileID: 0}
   mesh: {fileID: 0}
@@ -1046,11 +1146,54 @@ MonoBehaviour:
   restWeaknessNum: 0
   coreDamageRate: 2
   curTarget: 2
+  tryTry: 0
   attackConfigurations:
   - category: 0
-    attacks: 000000000100000002000000
-  - category: 0
-    attacks: 0300000004000000
+    attacks:
+    - attack: 0
+      weight: 0
+    - attack: 1
+      weight: 0
+    - attack: 2
+      weight: 0
+  - category: 1
+    attacks:
+    - attack: 4
+      weight: 0
+    - attack: 3
+      weight: 0
+  wave1: {fileID: 8481532737664997307, guid: 5e9b05873d774fa4888dc4c56a1002f0, type: 3}
+  wave2: {fileID: 8481532737664997307, guid: 5e9b05873d774fa4888dc4c56a1002f0, type: 3}
+  wave1Damage:
+    damage: 100
+    attackDir: {x: 0, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  wave2Damage:
+  - damage: 80
+    attackDir: {x: 0, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  - damage: 120
+    attackDir: {x: 0, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  - damage: 160
+    attackDir: {x: 0, y: 0, z: 0}
+    force: 0
+    changeHurt: 0
+    repelValue: 0
+  wave1pos: {fileID: 2777487973017097761}
+  wave2pos: {fileID: 7836455898961708306}
+  wave1Size: {x: 1, y: 1, z: 1}
+  wave2Size:
+  - {x: 0.8, y: 1, z: 1}
+  - {x: 1, y: 1.5, z: 1}
+  - {x: 1.2, y: 2, z: 1}
+  intervalTime: 0.3
 --- !u!1 &6139679835290116115
 GameObject:
   m_ObjectHideFlags: 0
@@ -1443,6 +1586,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &7208291223413765209
@@ -1852,6 +1996,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &7624321539853016387
@@ -2039,6 +2184,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &7724734883231965489
@@ -2226,6 +2372,7 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0
 --- !u!1 &8560672494665079236
@@ -2683,5 +2830,6 @@ MonoBehaviour:
   beLarger: 0
   toLargeSize: 0
   cookEffect: {fileID: 0}
+  attack1ShootCanTransmit: 0
   boss: {fileID: 0}
   isCore: 0

+ 53 - 52
ActionTowerDefense/Assets/Resources/Prefab/Boss/YuMenGuan/ShockWave.prefab

@@ -10,9 +10,6 @@ GameObject:
   m_Component:
   - component: {fileID: 595621105094313979}
   - component: {fileID: 1511199374513500728}
-  - component: {fileID: 6173982357823989696}
-  - component: {fileID: 4462262184620041724}
-  - component: {fileID: 8222308103590913532}
   m_Layer: 0
   m_Name: Square
   m_TagString: Untagged
@@ -28,8 +25,8 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 6818989632980075014}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 5, z: 1}
+  m_LocalPosition: {x: 0, y: -0.6421, z: 0}
+  m_LocalScale: {x: 1, y: 1.968085, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 7563468012801810871}
@@ -87,13 +84,48 @@ SpriteRenderer:
   m_WasSpriteAssigned: 1
   m_MaskInteraction: 0
   m_SpriteSortPoint: 0
---- !u!114 &6173982357823989696
+--- !u!1 &8481532737664997307
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7563468012801810871}
+  - component: {fileID: 1523951662418840392}
+  - component: {fileID: 5440897096587230531}
+  - component: {fileID: 7338455399974156006}
+  m_Layer: 0
+  m_Name: ShockWave
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7563468012801810871
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8481532737664997307}
+  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: 595621105094313979}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1523951662418840392
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6818989632980075014}
+  m_GameObject: {fileID: 8481532737664997307}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 9a4a2dbc1e482cd4b9f1532e1fddcb30, type: 3}
@@ -106,38 +138,26 @@ MonoBehaviour:
   force: 0
   changeHurt: 0
   repelValue: 0
-  bulletType: 0
+  bulletType: 1
   isGetTarget: 0
-  speed: 0
-  maxFlyTime: 2
+  speed: 8
+  maxFlyTime: 3
   flyTime: 0
   isTrack: 0
   trackTarget: {fileID: 0}
   isBack: 0
   stayTime: 0
+  canTransmit: 0
   haveTransmit: 0
   transmitTime: 0
   portalsController: {fileID: 0}
---- !u!65 &4462262184620041724
-BoxCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6818989632980075014}
-  m_Material: {fileID: 0}
-  m_IsTrigger: 1
-  m_Enabled: 1
-  serializedVersion: 2
-  m_Size: {x: 1, y: 1, z: 0.2}
-  m_Center: {x: 0, y: 0, z: 0}
---- !u!54 &8222308103590913532
+--- !u!54 &5440897096587230531
 Rigidbody:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6818989632980075014}
+  m_GameObject: {fileID: 8481532737664997307}
   serializedVersion: 2
   m_Mass: 1
   m_Drag: 0
@@ -147,35 +167,16 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 120
   m_CollisionDetection: 0
---- !u!1 &8481532737664997307
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 7563468012801810871}
-  m_Layer: 0
-  m_Name: ShockWave
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &7563468012801810871
-Transform:
+--- !u!65 &7338455399974156006
+BoxCollider:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 8481532737664997307}
-  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: 595621105094313979}
-  m_Father: {fileID: 0}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1.9483018, z: 0.2}
+  m_Center: {x: 0, y: -0.63933635, z: 0}

+ 18 - 1
ActionTowerDefense/Assets/Scripts/Boss/Boss.cs

@@ -45,6 +45,9 @@ public class Boss : MoveCharacter
     [Header("当前索敌是对塔还是对玩家")]
     public TargetType curTarget;
 
+    [Header("测试专用")]
+    public bool tryTry;
+
     //计算当前形态总血量
     private void CalculateHp()
     {
@@ -82,7 +85,7 @@ public class Boss : MoveCharacter
         }
     }
 
-    private void Start()
+    public void Start()
     {
         ChangeBossState();
         base.Init();
@@ -131,6 +134,17 @@ public class Boss : MoveCharacter
         {
             Enlarge();
         }
+        if (tryTry)
+        {
+            if (state != CharacterState.Attack)
+            {
+                ChangeState(CharacterState.Attack);
+            }
+        }
+    }
+
+    public virtual void Attack()
+    {
     }
 
     public override void ChangeState(CharacterState newState)
@@ -152,6 +166,9 @@ public class Boss : MoveCharacter
             case CharacterState.Die:
                 gameObject.SetActive(false);
                 break;
+            case CharacterState.Attack:
+                Attack();
+                break;
             default:
                 break;
         }

+ 154 - 13
ActionTowerDefense/Assets/Scripts/Boss/YuMenGuan/YuMenGuan.cs

@@ -14,13 +14,21 @@ public class YuMenGuan : Boss
         blackHand = 5,      //黑手
     }
 
+    public enum PoolType
+    {
+        wave1 = 0,
+        wave2 = 1,
+        block = 2,
+    }
+
     public enum AttackCategories
     {
         A = 0,
-        B = 0,
+        B = 1,
     }
 
-    public struct Attack
+    [System.Serializable]
+    public struct AttackAssignment
     {
         public AttackMethods attack;
         public int weight;              //权重
@@ -30,20 +38,89 @@ public class YuMenGuan : Boss
     public struct AttackType
     {
         public AttackCategories category;
-        public AttackMethods[] attacks;
+        public AttackAssignment[] attacks;
     }
 
     [Header("攻击配置")]
     public AttackType[] attackConfigurations;
+    private AttackMethods curAttackType;
 
     [Header("冲击波")]
     public GameObject wave1;
     public GameObject wave2;
+    public AttackInfo wave1Damage;
+    public AttackInfo[] wave2Damage;
     public Transform wave1pos;
     public Transform wave2pos;
-    private List<GameObject> wavePool = new List<GameObject>();
-    private int hasNum;     //池中已有的数量
-    private List<GameObject> usedWave = new List<GameObject>();
+    public Vector3 wave1Size;
+    public Vector3[] wave2Size;
+    public float intervalTime;          //三连冲击波,每个冲击波发射的间隔时间
+    private List<Bullet> wave1Pool = new List<Bullet>();
+    private List<Bullet> wave2Pool = new List<Bullet>();
+    private int[] hasNum;               //池中已有的数量
+    private List<Bullet> usedWave1 = new List<Bullet>();
+    private List<Bullet> usedWave2 = new List<Bullet>();
+    private int curWaveIndex = 0;
+    private List<Bullet> transit = new List<Bullet>();  //中转
+
+    private void Start()
+    {
+        base.Start();
+        curAttackType = AttackMethods.shockWave2;
+        hasNum = new int[3];
+    }
+
+    private void ExpandPool(PoolType id, int num)
+    {
+        int need = num - hasNum[(int)id];
+        if (need <= 0)
+        {
+            return;
+        }
+        GameObject prefab = null;
+        List<Bullet> pool = null;
+        List<Bullet> used = null;
+        switch (id)
+        {
+            case PoolType.wave1:
+                prefab = wave1;
+                pool = wave1Pool;
+                used = usedWave1;
+                break;
+            case PoolType.wave2:
+                prefab = wave2;
+                pool = wave2Pool;
+                used = usedWave2;
+                break;
+            case PoolType.block:
+                break;
+            default:
+                break;
+        }
+        foreach(Bullet b in used)
+        {
+            if (!b.gameObject.activeSelf)
+            {
+                transit.Add(b);
+                pool.Add(b);
+                need -= 1;
+                hasNum[(int)id] += 1;
+            }
+        }
+        for (int i = 0; i < need; i++)
+        {
+            GameObject g;
+            g = Instantiate(prefab, Vector3.zero, new Quaternion(0, 0, 0, 0), transform);
+            g.SetActive(false);
+            pool.Add(g.GetComponent<Bullet>());
+            hasNum[(int)id] += 1;
+        }
+        foreach (Bullet bu in transit)
+        {
+            used.Remove(bu);
+            transit = new List<Bullet>();
+        }
+    }
 
     public override void OnMove()
     {
@@ -69,7 +146,55 @@ public class YuMenGuan : Boss
     {
         base.ToMove(); curTarget = TargetType.Tower;
         CheckTarget();
-        //canMove = true;
+    }
+
+    private void ToLaunchWave2()
+    {
+        LaunchWave(1, curWaveIndex);
+        curWaveIndex++;
+        if (curWaveIndex == 3)
+        {
+            curWaveIndex = 0;
+        }
+    }
+
+    private void LaunchWave(int id, int index)
+    {
+        Vector3 dir1 = Vector3.left;
+        Vector3 dir2 = Vector3.right;
+        Bullet wv1, wv2;
+        switch (id)
+        {
+            case 0:
+                ExpandPool(PoolType.wave1, 2);
+                wv1 = wave1Pool[hasNum[id] - 1];
+                wv2 = wave1Pool[hasNum[id] - 2];
+                wv1.transform.localScale = wave1Size;
+                wv2.transform.localScale = wave1Size;
+                wave1Pool.Remove(wv1);
+                wave1Pool.Remove(wv2);
+                usedWave1.Add(wv1);
+                usedWave1.Add(wv2);
+                wv1.BeShoot(this, wave1pos.position, dir1, wave1Damage.damage, wave1Damage.force, wave1Damage.changeHurt, wave1Damage.repelValue, false);
+                wv2.BeShoot(this, wave2pos.position, dir2, wave1Damage.damage, wave1Damage.force, wave1Damage.changeHurt, wave1Damage.repelValue, false);
+                break;
+            case 1:
+                ExpandPool(PoolType.wave2, 2);
+                wv1 = wave2Pool[hasNum[id] - 1];
+                wv2 = wave2Pool[hasNum[id] - 2];
+                wv1.transform.localScale = wave2Size[index];
+                wv2.transform.localScale = wave2Size[index];
+                wave2Pool.Remove(wv1);
+                wave2Pool.Remove(wv2);
+                usedWave2.Add(wv1);
+                usedWave2.Add(wv2);
+                wv1.BeShoot(this, wave1pos.position, dir1, wave2Damage[index].damage, wave2Damage[index].force, wave2Damage[index].changeHurt, wave2Damage[index].repelValue, false);
+                wv2.BeShoot(this, wave2pos.position, dir2, wave2Damage[index].damage, wave2Damage[index].force, wave2Damage[index].changeHurt, wave2Damage[index].repelValue, false);
+                break;
+            default:
+                break;
+        }
+        hasNum[id] -= 2;
     }
 
     public void ShockWave(int id)
@@ -78,18 +203,34 @@ public class YuMenGuan : Boss
         {
             case 0:
                 ani.Play("attack_march", 0, 0);
-                if (hasNum == 0)
-                {
-                    GameObject wv1 = Instantiate(wave1, wave1pos.position, new Quaternion(0, 0, 0, 0), transform.parent);
-                    wavePool.Add(wv1);
-                    hasNum++;
-                }
+                LaunchWave(0, 0);
                 break;
             case 1:
+                ani.Play("attack_march", 0, 0);
+                ToLaunchWave2();
+                Invoke("ToLaunchWave2", intervalTime);
+                Invoke("ToLaunchWave2", intervalTime * 2);
                 break;
             default:
                 break;
         }
     }
 
+    public override void Attack()
+    {
+        switch (curAttackType)
+        {
+            case AttackMethods.move:
+                ChangeState(CharacterState.Run);
+                break;
+            case AttackMethods.shockWave1:
+                ShockWave(0);
+                break;
+            case AttackMethods.shockWave2:
+                ShockWave(1);
+                break;
+            default:
+                break;
+        }
+    }
 }