Example #1
0
    void Ani()
    {
        if (Time.timeScale == 0)
        {
            return;
        }
        animator.speed = GameManager.SpeedUp ? 1.25f : 1;
        animator.SetBool("Damage", damage < damagetime - 0.25f ? false : true);
        if (damage <= 0)
        {
            spriterenderer.color = new Color(spriterenderer.color.r, spriterenderer.color.g, spriterenderer.color.b, 1);
        }
        else
        {
            spriterenderer.color = new Color(spriterenderer.color.r, spriterenderer.color.g, spriterenderer.color.b, (int)(damage * 10) % 2 == 0 ? 1 : 0);
        }

        if (Input.GetAxisRaw("Horizontal") == 0 && !stop)
        {
            RaycastHit2D wallcheck = Physics2D.BoxCast(transform.position + new Vector3(0.2f, 0, 0) * (Input.GetAxisRaw("Horizontal Trigger") < 0 ? -1 : Input.GetAxisRaw("Horizontal Trigger") > 0 ? 1 : 0), new Vector2(boxCollider2D.size.x * 0.8f, boxCollider2D.size.y * 0.5f), 0, Vector2.zero, 0, 1 << LayerMask.NameToLayer("Background"));
            animator.SetBool("Run", Input.GetAxisRaw("Horizontal Trigger") == 0 || Mathf.Abs(rigid.velocity.x) < 1f || wallcheck ? false : true);
        }
        else if (Input.GetAxisRaw("Horizontal Trigger") == 0 && !stop)
        {
            RaycastHit2D wallcheck = Physics2D.BoxCast(transform.position + new Vector3(0.2f, 0, 0) * (Input.GetAxisRaw("Horizontal") < 0 ? -1 : Input.GetAxisRaw("Horizontal") > 0 ? 1 : 0), new Vector2(boxCollider2D.size.x * 0.8f, boxCollider2D.size.y * 0.5f), 0, Vector2.zero, 0, 1 << LayerMask.NameToLayer("Background"));
            animator.SetBool("Run", Input.GetAxisRaw("Horizontal") == 0 || Mathf.Abs(rigid.velocity.x) < 1f || wallcheck ? false : true);
        }
        else
        {
            animator.SetBool("Run", false);
        }

        if (Input.GetAxisRaw("Horizontal") == 0 || Input.GetAxisRaw("Horizontal Trigger") == 0 && !stop)
        {
            animator.SetBool("Turn", (Input.GetAxisRaw("Horizontal Trigger") < 0 && !spriterenderer.flipX) || (Input.GetAxisRaw("Horizontal Trigger") > 0 && spriterenderer.flipX) ? true : false);
            animator.SetBool("Turn", (Input.GetAxisRaw("Horizontal") < 0 && !spriterenderer.flipX) || (Input.GetAxisRaw("Horizontal") > 0 && spriterenderer.flipX) ? true : false);
        }

        if (!animator.GetBool("Damage") && !animator.GetBool("UseItem") && !stop && !animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Roll"))
        {
            spriterenderer.flipX = Input.GetAxisRaw("Horizontal") < 0 ? true : (Input.GetAxisRaw("Horizontal") > 0 ? false : spriterenderer.flipX);
            spriterenderer.flipX = Input.GetAxisRaw("Horizontal Trigger") < 0 ? true : (Input.GetAxisRaw("Horizontal Trigger") > 0 ? false : spriterenderer.flipX);
        }

        //animator.SetBool("Jump", rigid.velocity.y <= 0 ? !isground : !isground);
        animator.SetBool("Jump", !isground);
        animator.SetFloat("VelocityY", rigid.velocity.y);

        if (animator.GetBool("Crouch") || animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Roll"))
        {
            upground = Physics2D.BoxCast(new Vector2(transform.position.x, transform.position.y + 0.1f), new Vector2(boxCollider2D.size.x * 0.5f, boxCollider2D.size.y), 0, Vector2.zero, 0, 1 << LayerMask.NameToLayer("Background"));
        }

        if (Input.GetAxisRaw("Vertical") >= -0.75f && !stop)
        {
            animator.SetBool("Crouch", Input.GetAxisRaw("Vertical Trigger") < 0 ? true : upground && rigid.velocity.y == 0);
        }
        else if (!stop)
        {
            animator.SetBool("Crouch", Input.GetAxisRaw("Vertical") < -0.75f ? true : upground && rigid.velocity.y == 0);
        }

        animator.SetBool("Attack0", attack0);
        animator.SetBool("Attack1", attack1);
        animator.SetBool("Attack2", attack2);
        animator.SetBool("Arrow", arrow);
        animator.SetBool("Roll", roll);
        animator.SetBool("UseItem", useitem);
        animator.SetBool("IsGround", isground);
        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_UseItem"))
        {
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime == 0)
            {
                healcheck = false;
            }
            else if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime > 0.35f && !healcheck)
            {
                EffectManager.Play_Energy(transform.position, spriterenderer.flipX);
                SoundManager.HealSE(true);
                healcheck = true;
            }
            else if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1)
            {
                if (useitem)
                {
                    GameManager.Use_Item();
                    useitem = false;
                }
            }
        }

        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Run_Do"))
        {
            arrow = false;
            if ((animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 < Time.deltaTime) || (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 > 0.5f && animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 < 0.5f + Time.deltaTime) || (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 > 1 - Time.deltaTime))
            {
                SoundManager.StepSE(true);
            }
        }


        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Roll"))
        {
            arrow   = false;
            attack0 = false;
            attack1 = false;
            attack2 = false;
            roll    = false;
            useitem = false;
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1)
            {
                rigid.velocity = Vector2.zero;
            }
        }

        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Land_Attack"))
        {
            arrow = false;
            if (attack0 && animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.9f)
            {
                attack0 = false;
                attack1 = false;
                attack2 = false;
                SoundManager.AttackSE(true);
                SoundManager.YapSE(true, 2);
            }
        }

        if (attack0 && animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Attack0"))
        {
            arrow = false;
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.9f)
            {
                attack0 = false;
                SoundManager.AttackSE(true);
                SoundManager.YapSE(true, 3);
            }
        }

        if (attack1 && animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Attack1"))
        {
            arrow = false;
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.9f)
            {
                attack0 = false;
                attack1 = false;
                SoundManager.AttackSE(true);
                SoundManager.YapSE(true, 3);
            }
        }
        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Attack2"))
        {
            arrow = false;
            if (attack2 && animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.9f)
            {
                attack0 = false;
                attack1 = false;
                attack2 = false;
                SoundManager.AttackSE(true);
                SoundManager.YapSE(true, 2);
            }
        }

        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Arrow_Land") || animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Arrow_Air") || animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Arrow_Crouch"))
        {
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.75f && animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 < 0.9f)
            {
                if (emp == null)
                {
                    if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Arrow_Crouch"))
                    {
                        emp = Instantiate(Arrow_prefab, transform.position - new Vector3(0, 0.1f, 0), Quaternion.identity);
                    }
                    else
                    {
                        emp = Instantiate(Arrow_prefab, transform.position + new Vector3(0, 0.1f, 0), Quaternion.identity);
                    }
                    emp.transform.localScale = new Vector3(spriterenderer.flipX ? -1 : +1, 1, 1);
                    emp.GetComponent <Rigidbody2D>().AddForce(new Vector2(spriterenderer.flipX ? -10 : +10, 0), ForceMode2D.Impulse);
                    SoundManager.ArrowSE(true);
                }
            }
            else if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1 >= 0.9f)
            {
                arrow = false;
                emp   = null;
            }
        }

        if (animator.GetCurrentAnimatorStateInfo(0).IsName("Player_Death"))
        {
            rigid.constraints = RigidbodyConstraints2D.FreezeAll;
            if (animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1)
            {
                GameManager.GameOver_UI_static.SetActive(true);
                gameObject.SetActive(false);
            }
        }
    }