Преглед изворни кода

修改:冲击波实例化不在boss父物体下;冲击波阶段大小可修改;三连冲击波间隔可修改

SZAND\msx_2 пре 1 година
родитељ
комит
62d0dcbb34

+ 9 - 2
ActionTowerDefense/Assets/Resources/Prefab/Boss/YuMenGuan/Boss_YuMenGuan.prefab

@@ -27518,7 +27518,7 @@ MonoBehaviour:
   categories: 
   curCategoryID: 0
   minInterval: 1
-  maxInterval: 3
+  maxInterval: 5
   attackConfigurations:
   - category: 0
     attacks:
@@ -27565,12 +27565,19 @@ MonoBehaviour:
   launchDelayTime1: 1.083333
   launchDelayTime1loop: 0.55
   launchDelayTime2: 1.3166667
+  waveEnlargeScale:
+  - 1
+  - 2
+  - 3
   wave1Size: {x: 1, y: 1, z: 1}
   wave2Size:
   - {x: 1, y: 1, z: 1}
   - {x: 1.5, y: 1.5, z: 1}
   - {x: 2, y: 2, z: 1}
-  intervalTime: 0.5
+  intervalTime:
+  - 0.5
+  - 0.7
+  - 1
   maxShockTimes: 5
   minShockTimes: 1
   wave1aniTime: 1.5

+ 2 - 0
ActionTowerDefense/Assets/Scripts/Boss/YuMenGuan/WaveShockDir.cs

@@ -5,11 +5,13 @@ using UnityEngine;
 public class WaveShockDir : MonoBehaviour
 {
     public bool IsLeft;
+    public float scale;
     public GameObject leftWave;
     public GameObject rightWave;
 
     public void CheckTurn()
     {
+        transform.localScale = scale * Vector3.one;
         if (IsLeft)
         {
             leftWave.SetActive(true);

+ 9 - 4
ActionTowerDefense/Assets/Scripts/Boss/YuMenGuan/YuMenGuan.cs

@@ -56,9 +56,10 @@ public class YuMenGuan : Boss
     public Transform wave1pos;
     public Transform wave2pos;
     public float launchDelayTime1, launchDelayTime1loop, launchDelayTime2;
+    public float[] waveEnlargeScale;
     public Vector3 wave1Size;
     public Vector3[] wave2Size;
-    public float intervalTime;          //三连冲击波,每个冲击波发射的间隔时间
+    public float[] intervalTime;          //三连冲击波,每个冲击波发射的间隔时间
     private List<Bullet> wave1Pool = new List<Bullet>();
     private List<Bullet> wave2Pool = new List<Bullet>();
     private int[] hasNum;               //池中已有的数量
@@ -130,7 +131,7 @@ public class YuMenGuan : Boss
         for (int i = 0; i < need; i++)
         {
             GameObject g;
-            g = Instantiate(prefab, Vector3.zero, new Quaternion(0, 0, 0, 0), transform);
+            g = Instantiate(prefab, Vector3.zero, new Quaternion(0, 0, 0, 0), null);
             g.SetActive(false);
             pool.Add(g.GetComponent<Bullet>());
             hasNum[(int)id] += 1;
@@ -242,6 +243,8 @@ public class YuMenGuan : Boss
                 usedWave1.Add(wv2);
                 wv1.GetComponent<WaveShockDir>().IsLeft = true;
                 wv2.GetComponent<WaveShockDir>().IsLeft = false;
+                wv1.GetComponent<WaveShockDir>().scale = waveEnlargeScale[curStateId];
+                wv2.GetComponent<WaveShockDir>().scale = waveEnlargeScale[curStateId];
                 wv1.GetComponent<WaveShockDir>().CheckTurn();
                 wv2.GetComponent<WaveShockDir>().CheckTurn();
                 wv1.BeShoot(this, wave1pos.position, dir1, wave1Damage.damage, wave1Damage.force, wave1Damage.changeHurt, wave1Damage.repelValue, false);
@@ -261,6 +264,8 @@ public class YuMenGuan : Boss
                 usedWave2.Add(wv2);
                 wv1.GetComponent<WaveShockDir>().IsLeft = true;
                 wv2.GetComponent<WaveShockDir>().IsLeft = false;
+                wv1.GetComponent<WaveShockDir>().scale = waveEnlargeScale[curStateId];
+                wv2.GetComponent<WaveShockDir>().scale = waveEnlargeScale[curStateId];
                 wv1.GetComponent<WaveShockDir>().CheckTurn();
                 wv2.GetComponent<WaveShockDir>().CheckTurn();
                 wv1.BeShoot(this, wave1pos.position, dir1, wave2Damage[index].damage, wave2Damage[index].force, wave2Damage[index].changeHurt, wave2Damage[index].repelValue, false);
@@ -343,8 +348,8 @@ public class YuMenGuan : Boss
                 waveTime = 0;
                 ani.Play("yumenguan_smash_double", 0, 0);
                 Invoke("ToLaunchWave2", launchDelayTime2);
-                Invoke("ToLaunchWave2", intervalTime + launchDelayTime2);
-                Invoke("ToLaunchWave2", intervalTime * 2 + launchDelayTime2);
+                Invoke("ToLaunchWave2", intervalTime[curStateId] + launchDelayTime2);
+                Invoke("ToLaunchWave2", intervalTime[curStateId] * 2 + launchDelayTime2);
                 isWave2 = true;
                 break;
             default:

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

@@ -369,7 +369,7 @@ public class Character : MonoBehaviour
         if (transform.localScale.x >= toLargeSize - 0.1f)
         {
             beLarger = false;
-            transform.localScale = new Vector3(toLargeSize, toLargeSize, 1);
+            transform.localScale = new Vector3(toLargeSize, toLargeSize, toLargeSize);
             toLargeSize = 0;
         }
     }