void Awake()
 {
     main = this;
     anim = GetComponent <Animation>();
     text = transform.GetComponentInChildren <Text>();
     text.gameObject.SetActive(false);
 }
    public ComboFeedback FilterCombo(int comboCounter, Equipment equipment)
    {
        ComboFeedback feedback = new ComboFeedback();

        initAttackSpeed = equipment.attackSpeed[0].value;

        if (comboCounter > 0 && sliderCombo.value >= 1) // jika bar sudah penuh otomatis good dan combo = 1
        {
            feedback.combo   = ComboEnum.Good;
            feedback.counter = 1;
        }
        else if (comboCounter < equipment.perfect.Length)
        {
            if (IsBetween(sliderCombo.value, equipment.perfect[comboCounter]))   //cek perfect
            {
                feedback.combo   = ComboEnum.Perfect;
                feedback.counter = comboCounter + 1;
            }
            else if (IsBetween(sliderCombo.value, equipment.good[comboCounter]))  //cek good
            {
                feedback.combo   = ComboEnum.Good;
                feedback.counter = comboCounter + 1;
            }
            else   //else miss
            {
                feedback.combo   = ComboEnum.Miss;
                feedback.counter = 0;
            }

            if (feedback.counter > 0 && feedback.counter >= equipment.perfect.Length) // if after max combo
            {
                feedback.counter = 0;
            }
        }

        CalcAddedValue(equipment.attackSpeed[feedback.counter].value);
        SetMargin(feedback.counter, equipment);
        ResetValue();
        return(feedback);
    }
Exemple #3
0
    public void Attacking()
    {
        rigid2D.velocity = Vector2.zero;

        ComboFeedback feedback    = combo_Sys.FilterCombo(comboCounter, senjata);
        ComboEnum     comboPlayer = feedback.combo;

        comboCounter = feedback.counter;

        float TempDamage = 0f;

        Debug.Log("Attacking is " + comboPlayer + " dengan combo " + comboCounter);

        if (comboPlayer == ComboEnum.Perfect)
        {
            TempDamage = (senjata.Damage[comboCounter] / 100f) * Persentase_Perfect;
        }
        else if (comboPlayer == ComboEnum.Good)
        {
            TempDamage = (senjata.Damage[comboCounter] / 100f) * Persentase_Good;
        }
        else if (comboPlayer == ComboEnum.Miss)
        {
            TempDamage = (senjata.Damage[comboCounter] / 100f) * Persentase_Miss;
        }

        // Debug.Log("temp damage "+ TempDamage);

        /*
         *      Manggil Combonya gimana?
         *      Method Combonya -> ComboSystem.FilterCombo(Equipment,ComboBerapa)
         */

        Vector2 _castDir = Vector2.zero;

        switch (direction)
        {
        case Direction.Back:
            _castDir = Vector2.up;
            break;

        case Direction.Front:
            _castDir = Vector2.down;
            break;

        case Direction.Left:
            _castDir = Vector2.left;
            break;

        case Direction.Right:
            _castDir = Vector2.right;
            break;
        }

        rigid2D.AddForce(_castDir * attackLaunch);
        RaycastHit2D[] hits = Physics2D.BoxCastAll(boxCollider2D.transform.position, boxCollider2D.size, 0.0f, _castDir, attackDistance);
        //Debug.Log("Jumlah hits ada "+hits.Length);

        for (int i = 0; i < hits.Length; i++)
        {
            if (hits[i].collider != null && !hits[i].collider.gameObject.Equals(this.gameObject))
            {
                IAttackable attackable = hits[i].collider.gameObject.GetComponent <IAttackable>();
                if (attackable != null)
                {
                    //Debug.Log("Menyerang "+ hits[i].collider.gameObject.name);
                    if (comboPlayer == ComboEnum.Perfect)
                    {
                        attackable.ApplyDamage(TempDamage, gameObject, DamageType.Critical);
                    }
                    else
                    {
                        attackable.ApplyDamage(TempDamage, gameObject, DamageType.Normal);
                    }
                }
            }
        }
        //CancelInvoke("UnAttack");
        //Invoke("UnAttack",senjata.attackSpeed[comboCounter].wait);
    }