Ejemplo n.º 1
0
    IEnumerator getStunned(float t, GameObject stunningEffectObject, playerStatus.status prevStatus)
    {
        yield return(new WaitForSeconds(t));

        if (prevStatus == playerStatus.status.DEFENSE)
        {
            ps.currStatus = playerStatus.status.NORMAL;
        }
        else if (prevStatus == playerStatus.status.DASH)
        {
            ps.currStatus = playerStatus.status.NORMAL;
        }
        else
        {
            ps.currStatus = prevStatus;
        }
        gameObject.layer = 12;
        Destroy(stunningEffectObject);
    }
Ejemplo n.º 2
0
    public void hurt(Collision collision)
    {
        chargingAmount = 0;
        anim.SetTrigger("hurtTrigger");
        anim.SetBool("moving", false);
        Camera.main.GetComponent <AudioSource>().PlayOneShot(stunningClip, 2.0f);
        //StartCoroutine(controllerVibration(1.0f));

        if (ps.currStatus == playerStatus.status.HOLDING || ps.currStatus == playerStatus.status.HELD)
        {
            if (teamMember.layer != 11)
            {
                teamMember.layer = 11;
                teamMember.GetComponent <ArrowKeyMovement>().hurt(collision);
            }
        }
        prevStatus    = ps.currStatus;
        ps.currStatus = playerStatus.status.FLYING;
        dropMoneyAfterhurt();
        StartCoroutine(knockBack(collision, prevStatus));
    }
Ejemplo n.º 3
0
    public IEnumerator knockBack(Collision collision, playerStatus.status prevStatus, float stunTime = 2.5f)
    {
        if (ps.currStatus == playerStatus.status.HOLDING || ps.currStatus == playerStatus.status.HELD)
        {
            if (teamMember.layer != 11)
            {
                teamMember.layer = 11;
                StartCoroutine(teamMember.GetComponent <ArrowKeyMovement>().knockBack(collision, teamMember.GetComponent <playerStatus>().currStatus, 1.5f));
            }
        }

        Instantiate(hitYellow, collision.contacts[0].point, Quaternion.identity);
        this.prevStatus = prevStatus;
        Vector3 dir = -collision.contacts[0].normal;

        ps.currStatus = playerStatus.status.STUNNED;
        GameObject stunningEffectObject = Instantiate(stunnedEffect);

        stunningEffectObject.transform.position       = transform.position;
        stunningEffectObject.transform.parent         = transform;
        stunningEffectObject.transform.localPosition += new Vector3(0, 1.2f, 0);
        if (!(prevStatus == playerStatus.status.HOLDING || prevStatus == playerStatus.status.HELD))
        {
            for (float t = 0.0f; t <= 0.5f; t += Time.deltaTime)
            {
                if (!GameControl.instance.isStarted)
                {
                    rb.velocity = Vector3.zero;
                    yield break;
                }
                float speed = knockBackSpeed - dashSpeedCurve.Evaluate(t / 0.5f) * (knockBackSpeed - 5);
                rb.velocity = speed * dir;
                yield return(new WaitForSeconds(Time.deltaTime));
            }
        }
        StartCoroutine(getStunned(stunTime, stunningEffectObject, prevStatus));
    }