players collishion not fully working

I need help with the collishions of my isometric player controller because its doesn’t properly collide with stuff it phases through stuff with a little bit of push back.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController1 : MonoBehaviour
{
[SerializeField] private Rigidbody rb;
[SerializeField] private float speed = 5;
[SerializeField] private float _turnSpeed = 360;
private Vector3 input;
private Camera cam;

void Start ()
{
    cam = Camera.main;
}
private void Update() 
{
GatherInput();
 void GatherInput() 
 {
    input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
}
    Look();
}
private void FixedUpdate() 
{
    Move();
}
private void Look() 
{
    if (input == Vector3.zero) return;

    var rot = Quaternion.LookRotation(input.ToIso(), Vector3.up);
    transform.rotation = Quaternion.RotateTowards(transform.rotation, rot, _turnSpeed * Time.deltaTime);
}
private void Move() 
{
    rb.MovePosition(transform.position + transform.forward * input.normalized.magnitude * speed * Time.deltaTime);
}

}

public static class Helpers
{
private static Matrix4x4 _isoMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 45, 0));
public static Vector3 ToIso(this Vector3 input) => _isoMatrix.MultiplyPoint3x4(input);
}

You are calling the GatherInput method in Update then you are also creating the GatherInput method in Update. You can’t create a method inside another method. You can change your script to something like

private void Update() 
{
	GatherInput();
	Look();
}

void GatherInput()
{
	input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
}

void Look()
{
	if(input == Vector3.zero)
		return;

	var rot = Quaternion.LookRotation(input.ToIso(), Vector3.up);
	transform.rotation = Quaternion.RotateTowards(transform.rotation, rot, _turnSpeed * Time.deltaTime);
}

private void FixedUpdate() 
{
     Move();
}

private void Move() 
{
	rb.MovePosition(transform.position + transform.forward * input.normalized.magnitude * speed * Time.deltaTime);
}