Quellcode durchsuchen

优化了逃跑组件的功能,给1013的子弹添加了击中特效

Callum vor 4 Monaten
Ursprung
Commit
3d6ffed3e0

Datei-Diff unterdrückt, da er zu groß ist
+ 487 - 61
ActionTowerDefense/Assets/Cartoon FX Remaster/CFXR Prefabs/Explosions/CFXR Explosion Smoke 2 Solo (HDR).prefab


Datei-Diff unterdrückt, da er zu groß ist
+ 316 - 187
ActionTowerDefense/Assets/Cartoon FX Remaster/CFXR Prefabs/Explosions/CFXR2 WW Explosion.prefab


+ 4 - 0
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_1013.prefab

@@ -938,6 +938,10 @@ MonoBehaviour:
   canEscape: 1
   stopEscapeCD: 2
   escapeSpeed: 5
+  distanceToTowerDeviation: 1
+  distanceToTowerBase: 1.8
+  distanceToEnemyDeviation: 0.5
+  distanceToEnemyBase: 1.5
 --- !u!114 &7670319919627942488
 MonoBehaviour:
   m_ObjectHideFlags: 0

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/Skills/Fireball.prefab

@@ -121,8 +121,8 @@ MonoBehaviour:
   isTrack: 0
   canAlwaysTrack: 0
   trackTarget: {fileID: 0}
-  effect: {fileID: 0}
-  disappearEffect: {fileID: 0}
+  effect: {fileID: 725748389856807714, guid: 4bda94453d2ca7444a0fff05b2d425f5, type: 3}
+  disappearEffect: {fileID: 725748389856807714, guid: 4bda94453d2ca7444a0fff05b2d425f5, type: 3}
   canTransmit: 0
   haveTransmit: 0
   transmitTime: 0

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

@@ -239,7 +239,7 @@ public class Bullet : MonoBehaviour
         if (effect)
         {
             GetEffectPos(other);
-            PoolManager.Instantiate(effect, effectPos, new Quaternion(0, 0, 0, 0), bht.owner.bodyTrans);
+            PoolManager.Instantiate(effect, effectPos, new Quaternion(0, 0, 0, 0));
         }
     }
 

+ 15 - 5
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -78,7 +78,13 @@ public class Enemy : MoveCharacter
     public bool canEscape = false;
     private bool ShowEscapeValue() => canEscape;
     [ShowIf("ShowEscapeValue")] public float stopEscapeCD;
-    [ShowIf("ShowEscapeValue")] public float escapeSpeed;
+    [ShowIf("ShowEscapeValue")] public float escapeSpeed; //逃跑距离
+    [ShowIf("ShowEscapeValue")] public float distanceToTowerDeviation; //怪物逃跑靠近塔的距离偏差,防止怪物堆在一起
+    [ShowIf("ShowEscapeValue")] public float distanceToTowerBase; //怪物逃跑靠近塔的基础距离
+    [ShowIf("ShowEscapeValue")] public float distanceToEnemyDeviation; //怪物逃跑靠近坦克敌人的距离偏差,防止怪物堆在一起
+    [ShowIf("ShowEscapeValue")] public float distanceToEnemyBase; //怪物逃跑靠近坦克敌人的基础距离
+    private float distanceToTower;
+    private float distanceToEnemy;
     private float stopEscapeTimer;
     private EscapeTrigger escapeTrigger;
 
@@ -96,6 +102,8 @@ public class Enemy : MoveCharacter
     {
         am = attackController.attackMethod;
         len = am.Length;
+        distanceToTower = distanceToTowerBase;
+        distanceToEnemy = distanceToEnemyBase;
     }
 
     private void OnEnable()
@@ -569,11 +577,11 @@ public class Enemy : MoveCharacter
                 }
                 rb.velocity = velocity;
                 AdjustHeight();
-                if (Time.time - stopEscapeTimer > stopEscapeCD && escapeTrigger.IsSafe())
+                if (/*Time.time - stopEscapeTimer > stopEscapeCD && */escapeTrigger.IsSafe(distanceToEnemy))
                 {
                     ChangeState(CharacterState.Run);
                 }
-                else if (escapeTrigger.IsInEnemyTower())
+                else if (escapeTrigger.IsInEnemyTower(distanceToTower))
                 {
                     ChangeState(CharacterState.WaitForTank);
                 }
@@ -583,7 +591,7 @@ public class Enemy : MoveCharacter
                 {
                     Turn();
                 }
-                if (escapeTrigger.IsSafe())
+                if (escapeTrigger.IsSafe(distanceToEnemy))
                 {
                     ChangeState(CharacterState.Run);
                 }
@@ -665,6 +673,8 @@ public class Enemy : MoveCharacter
                 DropSouls();
                 break;
             case CharacterState.Escape:
+                distanceToTower = distanceToTowerBase + Random.Range(-distanceToTowerDeviation, distanceToTowerDeviation);
+                distanceToEnemy = distanceToEnemyBase + Random.Range(-distanceToEnemyDeviation, distanceToEnemyDeviation);
                 ani.Play("walk", 0, 0);
                 stopEscapeTimer = Time.time;
                 Turn();
@@ -854,7 +864,7 @@ public class Enemy : MoveCharacter
 
     private bool CheckEscape()
     {
-        return canEscape && !escapeTrigger.IsSafe() && !escapeTrigger.IsInEnemyTower();
+        return canEscape && !escapeTrigger.IsSafe(distanceToEnemy) && !escapeTrigger.IsInEnemyTower(distanceToTower);
     }
     public void Attack_summon()
     {

+ 0 - 19
ActionTowerDefense/Assets/Scripts/Characters/EnemyEscapeState.cs

@@ -1,19 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class EnemyEscapeState
-{
-    private bool isSafe = false;
-    private Enemy owner;
-
-    public EnemyEscapeState()
-    {
-
-    }
-
-    public void FixedUpdate()
-    {
-   
-    }
-}

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

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

+ 4 - 4
ActionTowerDefense/Assets/Scripts/Characters/EscapeTrigger.cs

@@ -8,7 +8,7 @@ public class EscapeTrigger : MonoBehaviour
     public List<BeSearchTrigger> tanekEnemy;
     public List<BeSearchTrigger> enemyTower;
 
-    public bool IsSafe()
+    public bool IsSafe(float distance)
     {
         if (tanekEnemy != null && tanekEnemy.Count > 0)
         {
@@ -21,14 +21,14 @@ public class EscapeTrigger : MonoBehaviour
                     continue;
                 }
                 if (enemy.GetComponentInParent<Enemy>().tag == EnemyTag.Tank &&
-                    enemy.transform.position.x > transform.position.x)
+                    enemy.transform.position.x > transform.position.x + distance)
                     return true;
             }
         }
         return false;
     }
 
-    public bool IsInEnemyTower()
+    public bool IsInEnemyTower(float distance)
     {
         if (enemyTower != null && enemyTower.Count > 0)
         {
@@ -40,7 +40,7 @@ public class EscapeTrigger : MonoBehaviour
                     enemyTower.RemoveAt(i);
                     continue;
                 }
-                if (MathF.Abs(tower.transform.position.x - transform.position.x) < 3)
+                if (MathF.Abs(tower.transform.position.x - transform.position.x) < distance)
                     return true;
             }
         }

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.