예제 #1
0
    private void Slide(bool _sliding, bool ceiling, float _move)
    {
        //Vector2 _targetVelocity;

        if (!_sliding && grounded)
        {
            if (ceiling)
            {
                _sliding = true;
            }
        }

        if (_sliding)
        {
            if (idleCollider != null && slidingCollider != null && grounded && !EdgeDetector.GetEdge())
            {
                idleCollider.enabled    = false;
                slidingCollider.enabled = true;
            }
            else
            {
                idleCollider.enabled    = true;
                slidingCollider.enabled = false;
            }

            if (GameMaster.GetCurrentStamina() > 0 && Mathf.Abs(_move) > 0)
            {
                if (grounded)
                {
                    targetVelocity.x = _move * slideSpeed;
                    GameMaster.UpdateStamina(-1f);
                }
            }
            else
            {
                targetVelocity.x = _move * maxSpeed;
            }
        }
        else if (!_sliding)
        {
            if (idleCollider != null && slidingCollider != null)
            {
                idleCollider.enabled    = true;
                slidingCollider.enabled = false;
            }

            targetVelocity.x = _move * maxSpeed;
        }
    }
예제 #2
0
    protected override void DetectEdge()
    {
        base.DetectEdge();

        bool walkingCollider = false;
        bool slideCollider   = false;

        if (EdgeDetector.GetEdge())
        {
            walkingCollider = idleCollider.enabled;
            slideCollider   = slidingCollider.enabled;

            slidingCollider.enabled = false;
            idleCollider.enabled    = true;
        }
        else if (EdgeDetector.GetOnEdge() && !EdgeDetector.GetEdge())
        {
            slidingCollider.enabled = slideCollider;
            idleCollider.enabled    = walkingCollider;
            EdgeDetector.SetOnEdge(false);
        }
    }