Esempio n. 1
0
    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
Esempio n. 2
0
 //Creates Enemy's attacks
 void Attack(PlayerController.AttackDataEx attack)
 {
     StartCoroutine(AttackPattern(attack));
 }