Player Movement - Collision with walls ( HELP! )

Hi, I am making a game where I use this code for movement on a regular GameObject → Cube

using System.Collections;
using UnityEngine;

class AS : MonoBehaviour {
    private float moveSpeed = 3f;
    private float gridSize = 1f;
    private enum Orientation {
        Horizontal,
        Vertical
    };
    private Orientation gridOrientation = Orientation.Horizontal;
    private bool allowDiagonals = false;
    private bool correctDiagonalSpeed = true;
    private Vector2 input;
    private bool isMoving = false;
    private Vector3 startPosition;
    private Vector3 endPosition;
    private float t;
    private float factor;

    public void Update() {
        if (!isMoving) {
            input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
            if (!allowDiagonals) {
                if (Mathf.Abs(input.x) > Mathf.Abs(input.y)) {
                    input.y = 0;
                } else {
                    input.x = 0;
                }
            }

            if (input != Vector2.zero) {
                StartCoroutine(move(transform));
            }
        }
    }

    public IEnumerator move(Transform transform) {
        isMoving = true;
        startPosition = transform.position;
        t = 0;

        if(gridOrientation == Orientation.Horizontal) {
            endPosition = new Vector3(startPosition.x + System.Math.Sign(input.x) * gridSize,
                startPosition.y, startPosition.z + System.Math.Sign(input.y) * gridSize);
        } else {
            endPosition = new Vector3(startPosition.x + System.Math.Sign(input.x) * gridSize,
                startPosition.y + System.Math.Sign(input.y) * gridSize, startPosition.z);
        }

        if(allowDiagonals  correctDiagonalSpeed  input.x != 0  input.y != 0) {
            factor = 0.7071f;
        } else {
            factor = 1f;
        }

        while (t < 1f) {
            t += Time.deltaTime * (moveSpeed/gridSize) * factor;
            transform.position = Vector3.Lerp(startPosition, endPosition, t);
            yield return null;
        }

        isMoving = false;
        yield return 0;
    }
}

I tried a different movement code for this one is based on a grid and still my Cube when I place other objects ( such as walls ) runs right through the wall!

When I use the First Person Controller the player bumps into every object he sees…

PLEASE HELP!

What do you want then?
Go through or not?

Ok make sure that ur player object has ->collider component .its may be box collider,mesh colldier…etc

Your walls/other objects need a collider attached to them!
There are a few to choose from, so read and decide which one is best for you!

transform.position = …; just teleports your object without checking collisions. Use OverlapSphere to detect collisions befor every teleportation step, or simple use Raycast to check if path is clear before start moving.

Why don’t you use a character controller and use it’s Move() or SimpleMove() function? This will make sure your character won’t go through colliders. Like konkol said, transform.position = is basicly just teleporting the object, without collision detection ( the same for Translate() I think )