Как реализовать логику ступенек

Написал данный код для реализации ступенек. Так как у игрока колайдер в виде капсулы, игрок упирается в ступеньку. Как это можно решить не игнорирую коллизию?

   public void Stairs()
    {
        var playerHeight = 1;
        _isGroundDetected = Physics.SphereCast(transform.position + _sphereOffset, 
            _sphereRadius, Vector3.down, out var sphereHit,
            _playerHeight + _stepSize + _sphereDistance, 
            _layerMask, QueryTriggerInteraction.Ignore);

        if (!_isGroundDetected)
            return;
        if (!OnGround)
            return;
        if (sphereHit.point.y + playerHeight/2 + 0.5f <= transform.position.y) // если уже забрались на ступеньку, то выходим
            return;
        if (sphereHit.point.y + playerHeight/2 - transform.position.y > 0.5f) // избегание слишком высоких ступенек
            return;
            
        var groundDotProductValid = sphereHit.normal.y > 0.75f;
        if (groundDotProductValid)
        {
            _targetHeight = transform.position.y + (_sphereOffset.y - sphereHit.distance); 
            transform.position = new Vector3(transform.position.x, _targetHeight, transform.position.z);
            _rigidBody.velocity = new Vector3(_rigidBody.velocity.x, 0, _rigidBody.velocity.z);
        }
    }

Ответы (0 шт):