Ejemplo n.º 1
0
    private IEnumerator OnShowAllFight(List <DamageData> allDamage)
    {
        for (int i = 0; i < allDamage.Count; i++)
        {
            FightItemButton target = null;
            Vector3         orgPos = allDamage[i].tType[0] == "P" ? playerButtonPos [allDamage [i].orgIdx] : enemyButtonPos [allDamage [i].orgIdx];

            //當TargetIdx重複時會加10,此時需要減去10
            int minusCount = allDamage [i].targetIdx >= 10 ? 10 : 0;

            target = allDamage[i].tType[1] == "P" ? playerButton [allDamage [i].targetIdx - minusCount] : enemyButton [allDamage [i].targetIdx - minusCount];
            Vector3 targetPos = allDamage[i].tType[1] == "P" ? playerButtonPos [allDamage [i].targetIdx - minusCount] : enemyButtonPos [allDamage [i].targetIdx - minusCount];

            GroundSEController gse = SEPool.Dequeue();
            gse.SetAttackShow(orgPos, targetPos, target, allDamage [i]);
            gse.onRecycleDamage = ShowFightEnd;
            gse.gameObject.SetActive(true);
            gse.Run();

            if (i == 0)
            {
                if (allDamage.Count == 1)
                {
                    yield return(new WaitForSeconds(0.5f));            //該名角色最後攻擊所需時間
                }
                yield return(new WaitForSeconds(0.2f));                //該名角色的物理及魔法攻擊的顯示間隔
            }
            else
            {
                yield return(new WaitForSeconds(0.5f));                //該名角色最後攻擊所需時間
            }
        }

        fightController.OnTriggerSkill(allDamage);
    }
Ejemplo n.º 2
0
 private void ShowFightEnd(GroundSEController gse, DamageData damageData, FightItemButton target, Vector3 tPos)
 {
     gse.gameObject.SetActive(false);
     target.SetHpBar(damageData.hpRatio);
     SEPool.Enqueue(gse);
     gse.onRecycle = null;
     gse.SetDamageShow(damageData, tPos);
     gse.onRecycle = ShowDamageEnd;
     gse.gameObject.SetActive(true);
     gse.Run();
 }
Ejemplo n.º 3
0
    public void SetAttackShow(Vector3 orgPos, Vector3 targetPos, FightItemButton target, DamageData data)
    {
        SetLightParent(orgPos, targetPos);

        damageData     = data;
        callbackTarget = target;
        tPos           = targetPos;

        seType = SpecailEffectType.Attack;
        damageLight.SetParabola(orgPos, targetPos);
        setComplete = true;
        isRun       = false;
    }