예제 #1
0
    void BulletRunning(EffectBasic eb)
    {
        BulletEffect be = (BulletEffect)eb;
        //从开始目标往目标飞行
        float   rate = (float)eb.nowTime / (float)eb.runningTime;
        Vector3 nPos = (be.target.transform.position - be.resorce.transform.position) * rate + be.resorce.transform.position;

        be.selfGO.transform.position = nPos;
    }
예제 #2
0
    void lineRemoveRunning(EffectBasic eb)
    {
        LineEffect lineEF = (LineEffect)eb;
        float      rate   = (float)eb.nowTime / (float)eb.runningTime;
        //计算当前位置并调整之
        LineRenderer LineRenderer = lineEF.selfGO.GetComponent <LineRenderer>();
        Vector3      nPos         = (lineEF.eGO.transform.position - lineEF.sGO.transform.position) * rate + lineEF.sGO.transform.position;

        LineRenderer.SetPosition(0, nPos);
        //调整子对象中的粒子发射器位置,使其与终点相同
        nPos.z = -5;
        lineEF.selfGO.GetComponentInChildren <ParticleSystem>().transform.position = nPos;
    }
예제 #3
0
    void ringCreateRunning(EffectBasic eb)
    {
        RingEffect ringEF = (RingEffect)eb;
        float      rate   = (float)eb.nowTime / (float)eb.runningTime;

        float a = ringEF.sSize - ringEF.eSize;
        float b = -2 * a;

        float size  = rate * rate * a + rate * b + ringEF.sSize;
        float alpha = (ringEF.eAlpha - ringEF.sAlpha) * rate;

        eb.selfGO.transform.localScale = new Vector3(size, size, 1);
        Color c = eb.selfGO.GetComponent <SpriteRenderer>().color;

        c.a = alpha + ringEF.sAlpha;
        eb.selfGO.GetComponent <SpriteRenderer>().color = c;

        eb.selfGO.transform.Rotate(0, 0, ringEF.TotalRotateAngle);
    }
예제 #4
0
    // Update is called once per frame
    public void Update()
    {
        for (int i = 0; i < efList.Count; ++i)
        {
            EffectBasic ef = efList[i];
            if (ef.delayFrame > 0)
            {
                ef.delayFrame -= 1;
            }
            else
            {
                if (ef.nowTime == 0)
                {
                    ef.EFStart(ef);
                }
                ef.nowTime += 1;
                ef.EFRunning(ef);
                if (ef.nowTime == ef.runningTime)
                {
                    ef.EFEnd(ef);
                    efList.Remove(ef);
                    if (efList.Count == 0)
                    {
                        MagicCore.Instance.setFlag(ClickFlag.normal);
                    }
                    --i;
                    continue;
                }
            }
        }

        for (int i = 0; i < efListPara.Count; ++i)
        {
            EffectBasic ef = efListPara[i];
            if (ef.delayFrame > 0)
            {
                ef.delayFrame -= 1;
            }
            else
            {
                if (ef.nowTime == 0)
                {
                    ef.EFStart(ef);
                }
                ef.nowTime += 1;
                ef.EFRunning(ef);
                if (ef.nowTime == ef.runningTime)
                {
                    ef.EFEnd(ef);
                    efListPara.Remove(ef);
                    if (efListPara.Count == 0)
                    {
                        MagicCore.Instance.setFlag(ClickFlag.normal);
                    }
                    --i;
                    continue;
                }
            }
        }
        if (efList.Count > 0)
        {
            MagicCore.Instance.setFlag(ClickFlag.wait);
        }
        if (efList.Count == 0 && MagicCore.Instance.getFlag() == ClickFlag.wait)
        {
            MagicCore.Instance.setFlag(ClickFlag.normal);
        }
    }
예제 #5
0
 public void nothing(EffectBasic eb)
 {
 }
예제 #6
0
 void BulletEnd(EffectBasic eb)
 {
     //生成爆炸
     eb.selfGO.transform.GetChild(0).gameObject.SetActive(true);
     //生成说明文字
 }
예제 #7
0
 void BulletStart(EffectBasic eb)
 {
     eb.selfGO.SetActive(true);
 }
예제 #8
0
    void figureCreateRunning(EffectBasic eb)
    {
        float rate = (float)eb.nowTime / (float)eb.runningTime;

        eb.selfGO.GetComponent <SpriteRenderer>().material.SetFloat("_Rate", rate);
    }
예제 #9
0
 void lineRemoveEnd(EffectBasic eb)
 {
     GameObject.Destroy(eb.selfGO);
 }
예제 #10
0
 void lineCreateEnd(EffectBasic eb)
 {
     //删除添加的粒子发射器
     eb.selfGO.GetComponentInChildren <ParticleSystem>().Stop();
 }
예제 #11
0
 void lineCreateStart(EffectBasic eb)
 {
     //在自己子物体添加一个粒子发射器
     eb.selfGO.GetComponentInChildren <ParticleSystem>().Play();
 }