IEnumerator AttackPattern(PlayerController.AttackDataEx data) { data.SetID(counterID); if (counterID == short.MaxValue) { counterID = 0; } counterID++; attackBuffer.Add(data); // Add the current attack to the attackBuffer yield return(new WaitForSeconds(data.startupFrames / 60)); animator.SetInteger(_AnimatorAttack, data.num); GameObject soundClip = Instantiate(data.sound, GameObject.Find("Main Camera/audio/").transform); // Sound for (int i = 0; i < data.hbData.Length; i++) { rb.AddForce(Vector3.Scale(data.hbData[i].playerForce, tempFacingV3), ForceMode.Impulse); string path = "Prefabs/Hurtboxes/Enemy1/"; string hurt = (data.hbData[i].hurtBox).name; CmdHurt(path + hurt, gameObject.transform.position + Vector3.Scale(data.hbData[i].hurtBox.transform.position, tempFacingV3), gameObject.transform.rotation, data.damage, data.stunFrames, data.knockdown, counterID); yield return(new WaitForSeconds(data.hbData[i].activeFrames / 60)); } attackBuffer.Remove(data); yield return(new WaitForSeconds(data.recoveryFrames / 60)); if (attackBuffer.Count == 0) { isAttacking = false; } } // Still doesn't manage network, check CmdHurt arguments
//Creates Enemy's attacks void Attack(PlayerController.AttackDataEx attack) { StartCoroutine(AttackPattern(attack)); }