chenxin
2020-10-27 8d10b61b215a3fad7eb53a7e7ee4dc9e9987d262
Assets/Scripts/TowerDefense/Level/AgentInsManager.cs
@@ -10,6 +10,7 @@
using TowerDefense.UI.HUD;
using UnityEngine;
using UnityEngine.AI;
using TowerDefense.Level;
/// <summary>
/// 基于兵线的Agent Instance管理器
@@ -223,6 +224,30 @@
        return agentWaveLineArray;
    }
    /// <summary>
    /// 设置某条兵线的所有小兵的移动状态
    /// </summary>
    /// <param name="waveLineId">兵线id 1~5, 如果是-1则设置所有兵线的状态</param>
    /// <param name="canMove">是否可以移动</param>
    /// <param name="isOppo">是否是敌方</param>
    public void SetWaveLineCanMove(int waveLineId, bool canMove, bool isOppo)
    {
        WaveLineAgentInsMgr[] waveLineAgents = isOppo ? getOppoWaveLineList() : GetWaveLineList();
        for (int i = 0; i < waveLineAgents.Length; ++i)
        {
            if (i == waveLineId - 1 || waveLineId == -1)
            {
                List<Agent> list = waveLineAgents[i].listAgent;
                for (int j = 0; j < list.Count; ++j)
                {
                    list[j].CanMove = canMove;
                }
            }
        }
    }
    public List<Agent> agentList
    {
        get { return this.agentInsList; }
@@ -259,12 +284,21 @@
        // 这一行防止无限的循环下去。
        if (forceGet) return ag;
        Agent agLeft = GetMinDisAgent(lineid - 1, oppo, true, noPoison);
        Agent agRight = GetMinDisAgent(lineid + 1, oppo, true, noPoison);
        agentTmpArr[0] = ag;
        agentTmpArr[1] = agLeft;
        agentTmpArr[2] = agRight;
        if (!EndlessLevelManager.instanceExists)
        {
            Agent agLeft = GetMinDisAgent(lineid - 1, oppo, true, noPoison);
            Agent agRight = GetMinDisAgent(lineid + 1, oppo, true, noPoison);
            agentTmpArr[1] = agLeft;
            agentTmpArr[2] = agRight;
        }
        else
        {
            agentTmpArr[1] = null;
            agentTmpArr[2] = null;
        }
        float minDis = 100000000f;
        int idx = -1;