Unity2D入门6 下蹲

完整代码

    bool checkHit()
    {
        Vector2 origin1, origin2;
        bool standUps = true;
        origin1 = transform.position + new Vector3(-0.25f, -0.25f);
        origin2 = transform.position + new Vector3(0.25f, -0.25f);
        if (Physics2D.Raycast(origin1, Vector2.up, 1f, 1 << LayerMask.NameToLayer("Ground")) || Physics2D.Raycast(origin2, Vector2.up, 1f, 1 << LayerMask.NameToLayer("Ground")))
        {
            standUps = false;
        }
        if (Physics2D.Raycast(origin1, Vector2.up, 1f, 1 << LayerMask.NameToLayer("Platforms")) || Physics2D.Raycast(origin2, Vector2.up, 1f, 1 << LayerMask.NameToLayer("Platforms")))
        {
            standUps = false;
        }
        return standUps;
    }
…………
        standUp = checkHit();
        boxColl.enabled = (!crouch) & standUp;
…………
        if (crouch)
        {
            Anim.SetBool("crouch", true);
            crouchspeed = 0.3f;
        }
        else if (!crouch && standUp)
        {
            Anim.SetBool("crouch", false);
            crouchspeed = 1f;
        }
        

下蹲时取消头部碰撞体判断。
利用physics2D.raycast检测下蹲是头顶是否还有障碍物。

你可能感兴趣的:(Unity入门)