Ejemplo n.º 1
0
    IEnumerator AttackPattern(AttackDataEx data)
    {
        yield return(new WaitForSeconds(data.startupFrames / 60));

        for (int i = 0; i < data.hbData.Length; i++)
        {
            rb.AddForce(data.hbData[i].playerForce * facingSide, ForceMode.Impulse);

            Instantiate(data.hbData[i].hurtBox, gameObject.transform.position + Vector3.Scale(data.hbData[i].hurtBox.transform.position, tempFacingV3), gameObject.transform.rotation);
            CancelCalculations();
            yield return(new WaitForSeconds(data.hbData[i].activeFrames / 60));
        }
        yield return(new WaitForSeconds(data.recoveryFramesOnMiss / 60));

        isAttacking = false;
    }
Ejemplo n.º 2
0
    IEnumerator AttackPattern(AttackDataEx data)
    {
        isAttacking = true;
        canCancel   = true;

        data.SetID(counterID);
        if (counterID == short.MaxValue)
        {
            counterID = 0;
        }
        counterID++;


        yield return(new WaitWhile(() => attackBuffer.Count != 0));

        attackBuffer.Add(data); // Add the current attack to the attackBuffer

        animator.SetInteger(_AnimatorAttack, data.num);
        yield return(new WaitForSeconds(data.startupFrames / 60));

        GameObject soundClip = Instantiate(data.sound, GameObject.Find("Main Camera/audio/").transform);

        for (int i = 0; i < data.hbData.Length; i++)
        {
            rb.AddForce(Vector3.Scale(data.hbData[i].playerForce, tempFacingV3), ForceMode.Impulse);
            string path = "Prefabs/Hurtboxes/";
            string hurt = (data.hbData[i].hurtBox).name;

            if (hurt.StartsWith("Light"))
            {
                path += "Light/";
            }
            else if (hurt.StartsWith("Heavy"))
            {
                path += "Heavy/";
            }
            else if (hurt.StartsWith("Special"))
            {
                path += "Special/";
            }

            CmdHurt(path + hurt,
                    gameObject.transform.position + Vector3.Scale(data.hbData[i].hurtBox.transform.position, tempFacingV3),
                    gameObject.transform.rotation,
                    data.damage,
                    data.stunFrames,
                    data.meterValue,
                    data.knockdown,
                    data.GetID());

            if (data.endsAerial && jumpedMidair == false)
            {
                jumpedMidair = true;
            }

            yield return(new WaitForSeconds(data.hbData[i].activeFrames / 60));
        }

        attackBuffer.Remove(data);
        animator.SetInteger(_AnimatorAttack, 0);
        yield return(new WaitForSeconds(data.recoveryFrames / 60));

        if (attackBuffer.Count == 0)
        {
            currentMoveInCombo = 0;
            canCancel          = false;
            isAttacking        = false;
        }
    }
Ejemplo n.º 3
0
    } // Used for midair jump calculations (DO NOT TOUCH)

    void Attack(AttackDataEx attack)
    {
        StartCoroutine(AttackPattern(attack));
    }
Ejemplo n.º 4
0
    } // Used for midair jump calculations (DO NOT TOUCH)

    void Attack(AttackDataEx attack)
    {
        lightAttack = false;
        rb.velocity = Vector3.zero;
        StartCoroutine(AttackPattern(attack));
    }