Assets.Scripts.Player.KeyboardMovement.FixedUpdate C# (CSharp) Method

FixedUpdate() public method

public FixedUpdate ( ) : void
return void
        void FixedUpdate()
        {
            var horizontalMovement = Input.GetAxisRaw("Horizontal");
            var verticalMovement = Input.GetAxisRaw("Vertical");

            var moveVector = new Vector3(horizontalMovement, 0, verticalMovement);

            var magnitude = moveVector.magnitude > 1 ? 1 : moveVector.magnitude;
            var speed = magnitude * MoveSpeed;
            _currentMoveSpeed = _currentMoveSpeed.MoveTowards(speed, Acceleration);

            if (speed > 0)
            {
                _lastDirection = moveVector;
            }

            var movement = (speed > 0 ? moveVector : _lastDirection) * _currentMoveSpeed * Time.deltaTime;
            var rayDistance = .4f;
            var offset = new Vector3(0, -.2f, 0);

            if (movement.z > 0 && Physics.Raycast(transform.position + offset, transform.forward, rayDistance, 1 << 8))
            {
                movement = new Vector3(movement.x, movement.y, 0);
            }
            else if (movement.z < 0 && Physics.Raycast(transform.position + offset, -transform.forward, rayDistance, 1 << 8))
            {
                movement = new Vector3(movement.x, movement.y, 0);
            }

            if (movement.x > 0 && Physics.Raycast(transform.position + offset, transform.right, rayDistance, 1 << 8))
            {
                movement = new Vector3(0, movement.y, movement.z);
            }
            else if (movement.x < 0 && Physics.Raycast(transform.position + offset, -transform.right, rayDistance, 1 << 8))
            {
                movement = new Vector3(0, movement.y, movement.z);
            }

            transform.Translate(movement);
        }