Bläddra i källkod

变身法师后召唤的第一个弓箭手一定能第一击漂浮敌方

SZAND\msx_2 1 år sedan
förälder
incheckning
febea87232

+ 5 - 4
ActionTowerDefense/Assets/Resources/Prefab/Transfiguration/Trans_Float.prefab

@@ -1033,9 +1033,9 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   controller: {fileID: 0}
   UIoffset: {x: 0, y: 0, z: 0}
-  floatProbability: 100
-  gainAbilityProbability: 10
-  abilityTimes: 1
+  floatProbability: 1
+  gainAbilityProbability: 5
+  abilityTimes: 5
   maxFlyHeight: 8
 --- !u!114 &3290368322717680010
 MonoBehaviour:
@@ -1051,6 +1051,8 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   maxHeight: 8
   minHeight: 6
+  floatProbability: 0
+  abilityTimes: 0
 --- !u!114 &8639832132491289351
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -1076,7 +1078,6 @@ MonoBehaviour:
   rb: {fileID: 0}
   bodyTrans: {fileID: 5769591908339262981}
   beSearchTrigger: {fileID: 316813748882225178}
-  attackTrigger: {fileID: 0}
   uiHp: {fileID: 3586716274361854270}
   state: 0
   attackTime: 0

+ 3 - 2
ActionTowerDefense/Assets/Scripts/Bullet.cs

@@ -156,9 +156,10 @@ public class Bullet : MonoBehaviour
                     if (toFloat)
                     {
                         owner.attackToFloat = false;
-                        if (owner.floatTimes != -1)
+                        owner.hasFloatTimes += 1;
+                        if (owner.hasFloatTimes == owner.floatTimes)
                         {
-                            owner.floatTimes += 1;
+                            owner.canHitFloat = false;
                         }
                         toFloat = false;
                         if (hitTrigger.tag != "EnemyTower")

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

@@ -212,7 +212,7 @@ public class Character : MonoBehaviour
         }
         GameObject bulletObj = PoolManager.Instantiate(bulletPrefab);
         Bullet bullet = bulletObj.GetComponent<Bullet>();
-        if (attackToFloat && (floatTimes == -1 || hasFloatTimes < floatTimes))
+        if (attackToFloat)
         {
             bullet.toFloat = true;
         }
@@ -269,7 +269,7 @@ public class Character : MonoBehaviour
         if (canHitFloat)
         {
             float k = Random.Range(0, 100);
-            if (k <= floatProbability)
+            if (hasFloatTimes == 0 || k <= floatProbability)
             {
                 attackToFloat = true;
             }

+ 3 - 1
ActionTowerDefense/Assets/Scripts/PlayerController.cs

@@ -1576,6 +1576,7 @@ public class PlayerController : MoveCharacter
     public float probability;       //攻击的漂浮概率
     public float gainAbilityProbability;    //弓箭手获得漂浮能力的概率
     public int abilityTimes;        //弓箭手释放漂浮能力的次数
+    private bool isFirst = true;
 
     public void Summon(int id)
     {
@@ -1609,8 +1610,9 @@ public class PlayerController : MoveCharacter
         if (canArrowHitFloat && id == 0)
         {
             float k = UnityEngine.Random.Range(0, 100);
-            if (k <= gainAbilityProbability)
+            if (isFirst || k <= gainAbilityProbability)
             {
+                isFirst = false;
                 demonic.attackToFloat = true;
                 demonic.floatProbability = probability;
                 demonic.floatTimes = abilityTimes;