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); }
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); }