chenxin
2020-10-28 56f231f1f6523d7920cf32f033f9bb6f0015550f
Assets/Scripts/TowerDefense/Level/WaveLineSelMgr.cs
@@ -21,10 +21,10 @@
    /// <summary>
    /// 己方战场的Boss
    /// </summary>
    public List<GameObject>    selfSkullList;
    public List<GameObject>    oppoSkullList;
    protected List<bool>       selfWarningList;
    protected List<Vector3>    selfSkullUIPos;
    public List<GameObject> selfSkullList;
    public List<GameObject> oppoSkullList;
    protected List<bool> selfWarningList;
    protected List<Vector3> selfSkullUIPos;
    protected GameObject[] selfWarningUI = new GameObject[5];
    /// <summary>
@@ -35,17 +35,17 @@
    /// <summary>
    /// 火攻击效果
    /// </summary>
    public ParticleSystem skillFirePrefab;
    public GameObject skillFirePrefab;
    /// <summary>
    /// 炸弹攻击效果
    /// </summary>
    public ParticleSystem skillBombPrefab;
    public GameObject skillBombPrefab;
    /// <summary>
    /// 停止移动的Buff特效.
    /// </summary>
    public ParticleSystem bufStopMovePrefab;
    public GameObject bufStopMovePrefab;
    protected bool zeroState = true;
@@ -67,9 +67,9 @@
        int skullNum = selfSkullList.Count;
        selfWarningList = new List<bool>();
        selfSkullUIPos = new List<Vector3>();
        for( int ti =0;ti<skullNum;ti ++)
        for (int ti = 0; ti < skullNum; ti++)
        {
            if( selfSkullList[ti])
            if (selfSkullList[ti])
            {
                Color tzeroc = new Color(1.0f, 1.0f, 1.0f, 0.0f);
                Material tmat = selfSkullList[ti].GetComponent<MeshRenderer>().material;
@@ -78,22 +78,22 @@
                tmat.color = tzeroc;
                UnityEngine.Camera sceneCam = ViewPortAdj.instance.cachedCamera;
                Vector3 centPos = sceneCam.WorldToScreenPoint( oppoSkullList[ti].transform.position );
                Vector3 centPos = sceneCam.WorldToScreenPoint(oppoSkullList[ti].transform.position);
                selfSkullUIPos.Add(centPos);
            }
            selfWarningList.Add(false);
        }
    }
    /// <summary>
    /// 开启BossWaring倒计时.
    /// </summary>
    /// <param name="cdtime"></param>
    public void StartCountDownBossWarning( float cdtime,int waveline )
    public void StartCountDownBossWarning(float cdtime, int waveline)
    {
        // 已经显示直接返回.
        if (selfWarningUI[waveline] != null ) return;
        if (selfWarningUI[waveline] != null) return;
        GameObject cdui = Instantiate(cdBossWarningPrefab);
        GameObject go = GameObject.Find("BattleMainUI");
@@ -109,7 +109,7 @@
        selfWarningUI[waveline] = cdui;
    }
    public void StopCountDownBossWarning( int waveline )
    public void StopCountDownBossWarning(int waveline)
    {
        Destroy(selfWarningUI[waveline]);
        selfWarningUI[waveline] = null;
@@ -119,12 +119,12 @@
    /// 开启某一条兵线的Boss警告.
    /// </summary>
    /// <param name="warn"></param>
    public void waveLineBossWarning( int waveline,bool warn)
    public void waveLineBossWarning(int waveline, bool warn)
    {
        if (selfWarningList[waveline] == warn) return;
        selfWarningList[waveline] = warn;
        if ( warn)
        if (warn)
        {
            if (selfSkullList[waveline])
            {
@@ -145,7 +145,7 @@
                seq.Append(tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), 0.25f));
            }
            if( oppoSkullList[waveline])
            if (oppoSkullList[waveline])
            {
                Material tmat = oppoSkullList[waveline].GetComponent<MeshRenderer>().material;
                Sequence seq = DOTween.Sequence();
@@ -182,41 +182,50 @@
    /// <summary>
    /// 在某一兵线上播放技能特效
    /// </summary>
    public void PlayWaveLineEffect( int id )
    public void PlayWaveLineEffect(int id)
    {
        if ((id >= waveLineList.Count) || (waveLineList[id] == null)) return;
        ParticleSystem playParticle = Instantiate(skillFirePrefab);
        playParticle.transform.position = LevelManager.instance.waveManager.GetWaveEndPos( id );
        playParticle.Play();
        GameObject obj = Instantiate(skillFirePrefab);
        ParticleSystem ps = obj.GetComponent<ParticleSystem>();
        if (ps == null)
            ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
        ps.transform.position = LevelManager.instance.waveManager.GetWaveEndPos(id);
        ps.Play();
        Destroy(obj, ps.main.duration);
    }
    /// <summary>
    /// 在战场内某一个位置播放特效
    /// </summary>
    /// <param name="pos"></param>
    public void PlayBattleAreaBombEffect( Vector3 pos)
    public void PlayBattleAreaBombEffect(Vector3 pos)
    {
        if (skillBombPrefab == null) return;
        ParticleSystem playParticle = Instantiate(skillBombPrefab);
        playParticle.transform.position = pos;
        playParticle.Play();
        GameObject obj = Instantiate(skillBombPrefab);
        ParticleSystem ps = obj.GetComponent<ParticleSystem>();
        if (ps == null)
            ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
        ps.transform.position = pos;
        ps.Play();
        Destroy(obj, ps.main.duration);
    }
    /// <summary>
    /// 对应兵线发亮.
    /// </summary>
    /// <param name="id"></param>
    public void waveLineFlash( int id)
    public void waveLineFlash(int id)
    {
        if ((id >= waveLineList.Count) || (waveLineList[id] == null) ) return;
        if ((id >= waveLineList.Count) || (waveLineList[id] == null)) return;
        //设置一个DOTween队列
        Sequence flashSeq = DOTween.Sequence();
        Material tmat = waveLineList[id].GetComponent<MeshRenderer>().material;
        flashSeq.Append( tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), 0.1f));
        flashSeq.Append(tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), 0.1f));
        flashSeq.Append(tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 0.2f), 0.08f));
        flashSeq.Append(tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), 0.08f));
        flashSeq.AppendInterval(0.05f);
@@ -230,17 +239,17 @@
    /// 对某一条兵线显示选中效果
    /// </summary>
    /// <param name="id"></param>
    public void fadeWaveline( int id,bool fadeOut,float ftime = 0.3f )
    public void fadeWaveline(int id, bool fadeOut, float ftime = 0.3f)
    {
        if ((id >= waveLineList.Count) || (waveLineList[id] == null)) return;
        Material tmat = waveLineList[id].GetComponent<MeshRenderer>().material;
        if( fadeOut)
        if (fadeOut)
        {
            tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), ftime );
            tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 1.0f), ftime);
        }
        else
        {
            tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 0.0f), ftime );
            tmat.DOColor(new Color(1.0f, 1.0f, 1.0f, 0.0f), ftime);
        }
    }
@@ -248,7 +257,7 @@
    /// 某一个位置攻击塔位放下。
    /// </summary>
    /// <param name="pos"></param>
    public void attackTowerFixed( int pos)
    public void attackTowerFixed(int pos)
    {
        if ((pos >= waveLineList.Count) || (waveLineList[pos] == null)) return;
@@ -265,17 +274,17 @@
    // Update is called once per frame
    void Update()
    {
        if( UnityEngine.Input.GetKeyDown( KeyCode.G ))
        if (UnityEngine.Input.GetKeyDown(KeyCode.G))
        {
            //PlayWaveLineEffect(2);
            /*ParticleSystem MoveStopEffect = Instantiate(WaveLineSelMgr.instance.bufStopMovePrefab);
            MoveStopEffect.transform.position = this.transform.position;
            MoveStopEffect.Play();*/
        }
        if( UnityEngine.Input.GetKeyDown( KeyCode.V ) )
        if (UnityEngine.Input.GetKeyDown(KeyCode.V))
        {
            PlayBattleAreaBombEffect(this.battleAreaObject.transform.position);
        }
    }
}