Procházet zdrojové kódy

风筝忍者暂存;修改武士_箭的抛物线

1243896040 před 2 týdny
rodič
revize
d6fd089dd5

+ 2 - 2
ActionTowerDefense/Assets/Resources/Prefab/ESpirits/ESpirits_KiteNinja.prefab

@@ -1544,11 +1544,11 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   rb: {fileID: 8639832132491289349}
-  bodyTrans: {fileID: 8639832132491289354}
+  bodyTrans: {fileID: 5769591908339262981}
   beSearchTrigger: {fileID: 316813748882225178}
   searchTrigger: {fileID: 3566347593191160092}
   bodyCollider: {fileID: 2616922587087395095}
-  uiHp: {fileID: 0}
+  uiHp: {fileID: 3586716274361854270}
   beHitTrigger: {fileID: 9020361017135710302}
   attackController: {fileID: 3979041853861796194}
   platform: {fileID: 0}

+ 4 - 4
ActionTowerDefense/Assets/Resources/Prefab/Enemy/Enemy_Samurai_arrow.prefab

@@ -757,6 +757,7 @@ MonoBehaviour:
   cookEffect: {fileID: 0}
   Attack_summonShootCanTransmit: 0
   debugAttackFrom: 0
+  charactertag: 1
   hitResistance: 0
   bc: {fileID: 0}
   foot: {fileID: 5440846222604650418}
@@ -810,7 +811,6 @@ MonoBehaviour:
   isOnFire: 0
   fireStacks: 0
   exp: 10
-  tag: 2
   dieEffect: {fileID: 417478504669294145, guid: 2a4e7e280b9d19042ba0f57ae5edf736, type: 3}
   name: 
   baseSortingOrder: 2000
@@ -1608,7 +1608,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 942762978129231799, guid: 9eb41f096fe437e47b16a65344bd9922, type: 3}
       propertyPath: angle
-      value: 20
+      value: 10
       objectReference: {fileID: 0}
     - target: {fileID: 942762978129231799, guid: 9eb41f096fe437e47b16a65344bd9922, type: 3}
       propertyPath: owner
@@ -1624,11 +1624,11 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 942762978129231799, guid: 9eb41f096fe437e47b16a65344bd9922, type: 3}
       propertyPath: gravity
-      value: 25
+      value: 20
       objectReference: {fileID: 0}
     - target: {fileID: 942762978129231799, guid: 9eb41f096fe437e47b16a65344bd9922, type: 3}
       propertyPath: arrivalAngle
-      value: 55
+      value: 20
       objectReference: {fileID: 0}
     - target: {fileID: 3174868161031788453, guid: 9eb41f096fe437e47b16a65344bd9922, type: 3}
       propertyPath: m_Name

+ 2 - 0
ActionTowerDefense/Assets/Resources/Prefab/MySoldier/Demonic_Giant.prefab

@@ -760,6 +760,7 @@ MonoBehaviour:
   cookEffect: {fileID: 0}
   Attack_summonShootCanTransmit: 0
   debugAttackFrom: 0
+  charactertag: 1
   hitResistance: 0
   bc: {fileID: 0}
   foot: {fileID: 5440846222604650418}
@@ -827,6 +828,7 @@ MonoBehaviour:
   runSpeed: 0
   demoicTags: 10
   ownDamageScale: 0
+  damageRadio: 3
   isReturnSoulTower: 0
   origSoulPos: {x: 0, y: 0, z: 0}
   isRecorded: 0

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

@@ -183,7 +183,7 @@ public class YuMenGuan : Boss
         }
         else
         {
-            otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
+            otherTarget = searchTrigger.GetTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
             if (otherTarget != null)
             {
                 EndCurAttackState(false);
@@ -448,7 +448,7 @@ public class YuMenGuan : Boss
             case AttackCategories.A:
                 searchTrigger.enabled = true;
                 otherTarget = null;
-                otherTarget = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
+                otherTarget = searchTrigger.GetTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
                 if (otherTarget == null)
                 {
                     isAttackWalk = false;

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/Demonic.cs

@@ -69,7 +69,7 @@ public class Demonic : MoveCharacter
 
     public bool SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly,attackController.curAttackMethod.searchMode);
+        targetCharacter = searchTrigger.GetTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly,attackController.curAttackMethod.searchMode);
         if (targetCharacter != null)
         {
             return true;

+ 3 - 10
ActionTowerDefense/Assets/Scripts/Characters/Enemy.cs

@@ -8,12 +8,6 @@ using TMPro;
 using Unity.VisualScripting;
 using UnityEngine;
 
-public enum EnemyTag
-{
-    Common,
-    Backline,
-    Tank
-}
 
 public enum SearchState
 {
@@ -28,7 +22,6 @@ public class Enemy : MoveCharacter
     [Title("Enemy属性")]
     [LabelText("击杀提供的经验值")]
     public int exp;
-    public EnemyTag tag;
     [LabelText("死亡特效")]
     public GameObject dieEffect;
     public string name;
@@ -694,7 +687,7 @@ public class Enemy : MoveCharacter
                     {
                         StoneStatue stoneStatue = PoolManager.Instantiate(Resources.Load<GameObject>("Prefab/StoneStatue"), transform.position).GetComponentInChildren<StoneStatue>();
                         GameManager.instance.player.rebornSkills.Add(stoneStatue);
-                        if(tag == EnemyTag.Tank)
+                        if(charactertag == CharacterTag.Tank)
                         {
                             stoneStatue.bulletCount = 6;
                             stoneStatue.transform.parent.localScale = Vector3.one * 1.5f;
@@ -815,9 +808,9 @@ public class Enemy : MoveCharacter
         }
     }
 
-    public bool SearchTarget()
+    public virtual bool SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
+        targetCharacter = searchTrigger.GetTarget(attackController.targetTypes, attackController.curAttackMethod.canHitFly, attackController.curAttackMethod.searchMode);
 
         if (targetCharacter != null)
         {

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

@@ -20,7 +20,7 @@ public class EscapeTrigger : MonoBehaviour
                     tanekEnemy.RemoveAt(i);
                     continue;
                 }
-                if (enemy.GetComponentInParent<Enemy>().tag == EnemyTag.Tank &&
+                if (enemy.GetComponentInParent<Enemy>().charactertag == CharacterTag.Tank &&
                     enemy.transform.position.x > transform.position.x + distance)
                     return true;
             }
@@ -53,7 +53,7 @@ public class EscapeTrigger : MonoBehaviour
         if (trigger)
         {
             TargetType otherTargetType = (TargetType)Enum.Parse(typeof(TargetType), trigger.owner.tag);
-            if (otherTargetType == TargetType.Enemy && trigger.owner.GetComponent<Enemy>().tag == EnemyTag.Tank)
+            if (otherTargetType == TargetType.Enemy && trigger.owner.GetComponent<Enemy>().charactertag == CharacterTag.Tank)
             {
                 tanekEnemy.Add(trigger);
             }

+ 7 - 0
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -6,10 +6,17 @@ using UnityEngine;
 using TMPro;
 using Sirenix.OdinInspector;
 
+public enum CharacterTag
+{
+    Common,
+    Tank
+}
+
 public class MoveCharacter : Character
 {
     [Space(30)]
     [Title("MoveCharacter属性")]
+    public CharacterTag charactertag;
     [LabelText("角色抗击打值")] public int hitResistance;
     [LabelText("Buff控制器")] public BuffController bc;
 

+ 53 - 89
ActionTowerDefense/Assets/Scripts/Characters/SearchTrigger.cs

@@ -200,7 +200,7 @@ public class SearchTrigger : MonoBehaviour
         return list;
     }
 
-    public Character GetMinDisTarget(List<TargetType> targetTypes, bool canHitFly,SearchMode searchMode)
+    public Character GetTarget(List<TargetType> targetTypes, bool canHitFly,SearchMode searchMode)
     {
         if (!enabled || !gameObject.activeInHierarchy)
         {
@@ -221,106 +221,69 @@ public class SearchTrigger : MonoBehaviour
             downAngle = am.maxDownAngle;
         }
 
-        switch (searchMode)
+        Character targetChar = null;
+        float targetDistance = -1;
+        for (int i = 0; i < list.Count; i++)
         {
-            case SearchMode.MinDistance:
-                Character minDisChar = null;
-                float minDistance = -1;
-                for (int i = 0; i < list.Count; i++)
+            Character character = list[i];
+            //判断对象是否在远程单位的射击夹角范围内
+            if (isShootAttack)
+            {
+                Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
+                float angle = Vector3.Angle(dir, Vector3.left * ownerBodyScale.x);
+                if ((dir.y > 0 && angle > upAngle) || (dir.y < 0 && angle > downAngle))
                 {
-                    Character character = list[i];
-                    //判断对象是否在远程单位的射击夹角范围内
-                    if (isShootAttack)
-                    {
-                        if (character.beSearchTrigger == null || character == null) continue;
-                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
-                        float angle = Vector3.Angle(dir, Vector3.left * ownerBodyScale.x);
-                        if ((dir.y > 0 && angle > upAngle) || (dir.y < 0 && angle > downAngle))
-                        {
-                            continue;
-                        }
-                    }
-                    //判断是否在攻击范围内
-                    float distance = Mathf.Abs(character.transform.position.x - ownerPosition.x);
-                    if (minDisChar == null || minDistance == -1 || minDistance > distance)
-                    {
-                        minDisChar = character;
-                        minDistance = distance;
-                    }
+                    continue;
                 }
-                return minDisChar;
-            case SearchMode.MaxDistance:
-                Character maxDisChar = null;
-                float maxDistance = -1;
-                for (int i = 0; i < list.Count; i++)
+            }
+            float distance = Mathf.Abs(character.transform.position.x - ownerPosition.x);
+            if (targetChar == null)
+            {
+                targetChar = character;
+                targetDistance = distance;
+            }
+            else
+            {
+                switch (searchMode)
                 {
-                    Character character = list[i];
-                    //判断对象是否在远程单位的射击夹角范围内
-                    if (isShootAttack)
-                    {
-                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
-                        float angle = Vector3.Angle(dir, Vector3.left * ownerBodyScale.x);
-                        if ((dir.y > 0 && angle > upAngle) || (dir.y < 0 && angle > downAngle))
+                    case SearchMode.MinDistance:
+                        if (targetDistance > distance)
                         {
-                            continue;
+                            targetChar = character;
+                            targetDistance = distance;
                         }
-                    }
-                    //判断是否在攻击范围内
-                    float distance = Mathf.Abs(character.transform.position.x - ownerPosition.x);
-                    if (maxDisChar == null || maxDistance == -1 || maxDistance < distance)
-                    {
-                        maxDisChar = character;
-                        maxDistance = distance;
-                    }
-                }
-                //Debug.Log(maxDisChar);
-                return maxDisChar;
-            case SearchMode.MinHp:
-                Character minHPChar = null;
-                for (int i = 0; i < list.Count; i++)
-                {
-                    Character character = list[i];
-                    //判断对象是否在远程单位的射击夹角范围内
-                    if (isShootAttack)
-                    {
-                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
-                        float angle = Vector3.Angle(dir, Vector3.left * ownerBodyScale.x);
-                        if ((dir.y > 0 && angle > upAngle) || (dir.y < 0 && angle > downAngle))
+                        break;
+                    case SearchMode.MaxDistance:
+                        if (targetDistance < distance)
                         {
-                            continue;
+                            targetChar = character;
+                            targetDistance = distance;
                         }
-                    }
-                    if (minHPChar == null || minHPChar.hp < character.hp)
-                    {
-                        minHPChar = character;
-                    }
-                }
-                return minHPChar;
-            case SearchMode.MaxHp:
-                Character maxHPChar = null;
-                for (int i = 0; i < list.Count; i++)
-                {
-                    Character character = list[i];
-                    //判断对象是否在远程单位的射击夹角范围内
-                    if (isShootAttack)
-                    {
-                        Vector3 dir = character.beSearchTrigger.transform.position - transform.position;
-                        float angle = Vector3.Angle(dir, Vector3.left * ownerBodyScale.x);
-                        if ((dir.y > 0 && angle > upAngle) || (dir.y < 0 && angle > downAngle))
+                        break;
+                    case SearchMode.MinHp:
+                        if (targetChar.hp < character.hp)
                         {
-                            continue;
+                            targetChar = character;
                         }
-                    }
-                    if (maxHPChar == null || maxHPChar.hp > character.hp)
-                    {
-                        maxHPChar = character;
-                    }
+                        break;
+                    case SearchMode.MaxHp:
+                        if (targetChar.hp > character.hp)
+                        {
+                            targetChar = character;
+                        }
+                        break;
+                    case SearchMode.MinDisTank:
+                        if (targetDistance < distance)
+                        {
+                            targetChar = character;
+                            targetDistance = distance;
+                        }
+                        break;
                 }
-                return maxHPChar;
-            case SearchMode.ByType:
-                break;
+
+            }
         }
-        return null;
+        return targetChar;
     }
 
     public Character GetMinHPCharacter(List<TargetType> targetTypes, bool canHitFly)
@@ -346,5 +309,6 @@ public enum SearchMode
     MaxDistance,
     MinHp,
     MaxHp,
+    MinDisTank,
     ByType
 }

+ 0 - 10
ActionTowerDefense/Assets/Scripts/Spirits/ESpirits_KiteNinja.cs

@@ -4,15 +4,5 @@ using UnityEngine;
 
 public class ESpirits_KiteNinja : Enemy
 {
-    // Start is called before the first frame update
-    void Start()
-    {
-        
-    }
 
-    // Update is called once per frame
-    void Update()
-    {
-        
-    }
 }

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Tower/EnemyTower.cs

@@ -43,7 +43,7 @@ public class EnemyTower : Character
 
     public void SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
+        targetCharacter = searchTrigger.GetTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
     }
 
     public override void OnState()

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

@@ -30,7 +30,7 @@ public class Tower : Character
 
     public void SearchTarget()
     {
-        targetCharacter = searchTrigger.GetMinDisTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
+        targetCharacter = searchTrigger.GetTarget(attackController.targetTypes, true, attackController.curAttackMethod.searchMode);
     }
 
     public void Attack_March()

+ 2 - 3
ActionTowerDefense/GenerateDatas/json/cfgenemy.json

@@ -335,10 +335,9 @@
       0
     ],
     "HP": 500,
-    "AttackSummon": 50,
+    "AttackSummon": 0,
     "AttackMarch": [
-      30,
-      100
+      1
     ],
     "MinMoveSpeed": 6,
     "MaxMoveSpeed": 8

binární
ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx