فهرست منبع

风筝忍者暂存

1243896040 2 هفته پیش
والد
کامیت
0c88704fa1

+ 65 - 5
ActionTowerDefense/Assets/Resources/Prefab/ESpirits/ESpirits_KiteNinja.prefab

@@ -706,6 +706,59 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 688f44fee7c252840876e657c3d46617, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+--- !u!1 &2245722223333163065
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3562750044523274782}
+  - component: {fileID: 5998292447067617811}
+  m_Layer: 8
+  m_Name: ChainShoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3562750044523274782
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2245722223333163065}
+  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: []
+  m_Father: {fileID: 5769591908339262981}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5998292447067617811
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2245722223333163065}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e064897d913761a43af51cde07bb8af9, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  owner: {fileID: 4381111746059301371}
+  arrow: {fileID: 7473170563405908938, guid: 49e695ae2f4155043a4964f0a3e4a0b5, type: 3}
+  num: 3
+  angle: 10
+  arrivalAngle: 20
+  damage: 10
+  tryy: 0
+  gravity: 20
+  speed: 25
 --- !u!1 &2475269063027159835
 GameObject:
   m_ObjectHideFlags: 0
@@ -888,6 +941,7 @@ Transform:
   m_Children:
   - {fileID: 2983912410871356969}
   - {fileID: 6561999689701501378}
+  - {fileID: 3562750044523274782}
   m_Father: {fileID: 8639832132491289354}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1365,7 +1419,7 @@ MonoBehaviour:
   attackMethod_summon: []
   attackMethod_march:
   - attackName: attack_march
-    attackType: 1
+    attackType: 2
     attackInfo:
       attackValue: 0
       damage: 0
@@ -1374,7 +1428,7 @@ MonoBehaviour:
       criticalStrikeEffect: 0
       lifesteal: 0
       effect: {fileID: 0}
-      attackEffect: 
+      attackEffect: 06000000
       attackMethod_Type: 0
       floatState:
         time: 0
@@ -1411,8 +1465,8 @@ MonoBehaviour:
         rate: 0
         time: 0
       stackingWounds:
-        damage: 0
-        time: 0
+        damage: 1
+        time: 1
       changeDamage:
         rate: 0
       sustainedInjury:
@@ -1589,6 +1643,7 @@ MonoBehaviour:
   cookEffect: {fileID: 0}
   Attack_summonShootCanTransmit: 0
   debugAttackFrom: 0
+  charactertag: 0
   hitResistance: 0
   bc: {fileID: 0}
   foot: {fileID: 8639832132450015562}
@@ -1640,7 +1695,6 @@ MonoBehaviour:
   isOnFire: 0
   fireStacks: 0
   exp: 10
-  tag: 0
   dieEffect: {fileID: 417478504669294145, guid: 2a4e7e280b9d19042ba0f57ae5edf736, type: 3}
   name: 
   baseSortingOrder: 7000
@@ -1663,3 +1717,9 @@ MonoBehaviour:
   dropSoulMin: 1
   dropProbability: 100
   dropSoulAngle: 60
+  lockingLogic: {x: 1, y: 2}
+  attackInterval: 0
+  attackNum: 0
+  targetIsPlayer: 0
+  lockingNum: 0
+  lockCharacter: {fileID: 0}

+ 0 - 8
ActionTowerDefense/Assets/Scripts/Characters/SearchTrigger.cs

@@ -272,13 +272,6 @@ public class SearchTrigger : MonoBehaviour
                             targetChar = character;
                         }
                         break;
-                    case SearchMode.MinDisTank:
-                        if (targetDistance < distance)
-                        {
-                            targetChar = character;
-                            targetDistance = distance;
-                        }
-                        break;
                 }
 
             }
@@ -309,6 +302,5 @@ public enum SearchMode
     MaxDistance,
     MinHp,
     MaxHp,
-    MinDisTank,
     ByType
 }

+ 52 - 0
ActionTowerDefense/Assets/Scripts/Skills/ChainShoot.cs

@@ -0,0 +1,52 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ChainShoot : SpecialSkills
+{
+    [Header("弓箭预制体")]
+    public GameObject arrow;
+
+    [Header("齐发参数")]
+    public int num;
+    public float angle;
+    public float arrivalAngle;
+    public int damage;
+    public bool tryy;
+    public float gravity = 9.8f;         // 重力加速度
+    public float speed;
+
+    public override void Attack()
+    {
+        base.Attack();
+        Shoot();
+    }
+
+    public void Shoot()
+    {
+        float angleInterval = num > 1 ? angle / (float)(num - 1) : 0f;
+        for (int i = 0; i < num; i++)
+        {
+            float ang;
+            GameObject obj = PoolManager.Instantiate(arrow);
+            MultiArrowController arrowController = obj.GetComponent<MultiArrowController>();
+            if (arrowController == null)
+            {
+                arrowController = obj.AddComponent<MultiArrowController>();
+            }
+            if (owner.bodyTrans.localScale.x > 0)
+            {
+                ang = 180 - arrivalAngle - angle / 2 + i * angleInterval;
+            }
+            else
+            {
+                ang = arrivalAngle - angle / 2 + i * angleInterval;
+            }
+            ang = ang / 180 * Mathf.PI;
+            Vector3 dir = new Vector3(Mathf.Cos(ang), Mathf.Sin(ang), 0);
+            arrowController.Initialize(gravity, speed);
+            obj.GetComponent<Bullet>().BeShoot(owner, transform.position, dir, false);
+
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/Skills/ChainShoot.cs.meta

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

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

@@ -1,8 +1,81 @@
+using Sirenix.OdinInspector;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ESpirits_KiteNinja : Enemy
 {
+    [Space(30)]
+    [Title("ESpirits_Assassin属性")]
+    [Tooltip("X为锁定玩家次数Y为锁定肉盾次数")]
+    [LabelText("锁敌逻辑")] public Vector2 lockingLogic;
+    [LabelText("连击间隔")] public float attackInterval;
+    [LabelText("连击次数")] public float attackNum;
+    public bool targetIsPlayer;
+    public int lockingNum;
+    private PlayerController player;
+    public MoveCharacter lockCharacter;
+    public override void Init()
+    {
+        base.Init();
+        targetIsPlayer = true;
+        lockingNum = 0;
+        player = PlayersInput.instance[0];
+        ChooseLockingTarget();
+    }
 
+    public override bool SearchTarget()
+    {
+        targetCharacter = lockCharacter;
+        return true;
+    }
+
+    public void ChooseLockingTarget()
+    {
+        lockingNum++;
+        if (targetIsPlayer)
+        {
+            if (lockingNum > lockingLogic.x)
+            {
+                targetIsPlayer = false;
+                lockingNum = 0;
+            }
+            else
+            {
+                lockCharacter = player;
+            }
+        }
+        else
+        {
+            if (lockingNum > lockingLogic.y)
+            {
+                targetIsPlayer = true;
+                lockingNum = 0;
+            }
+            else
+            {
+                if (player.demonicDic[0].Count == 0)
+                {
+                    lockCharacter = player;
+                    lockingNum--;
+                }
+                else
+                {
+                    lockCharacter = player.demonicDic[0][0];
+                    Vector3 myPos = transform.position;
+                    float minDistance = Vector3.Distance(myPos, lockCharacter.transform.position);
+                    for (int i = 0; i < player.demonicDic[0].Count; i++)
+                    {
+                        Demonic demonic = player.demonicDic[0][i];
+                        float distance = Vector3.Distance(myPos, demonic.transform.position);
+                        if (minDistance > distance)
+                        {
+                            minDistance = distance;
+                            lockCharacter = demonic;
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

+ 1 - 1
ActionTowerDefense/GenerateDatas/json/cfgenemy.json

@@ -337,7 +337,7 @@
     "HP": 500,
     "AttackSummon": 0,
     "AttackMarch": [
-      1
+      10
     ],
     "MinMoveSpeed": 6,
     "MaxMoveSpeed": 8

BIN
ActionTowerDefense/Luban/Config/Datas/怪物表.xlsx