Movement script ignoring collision

Quaternion myRotation = myTransform.rotation;
myRotation.x = 0;
myTransform.rotation = myRotation;
// keep track of the distance between this gameObject and destinationPosition
destinationDistance = Vector3.Distance(destinationPosition, myTransform.position);
if(destinationDistance < .5f){ // To prevent shaking behavior when near destination
moveSpeed = 0;
} else if(destinationDistance > .5f){
moveSpeed = 5;
myTransform.position = Vector3.MoveTowards(myTransform.position, destinationPosition, moveSpeed * Time.deltaTime);

Doesn’t matter what I do, the units always ignore collision, I’ve tried everything.
The only thing that causes collision to work here is a rigidbody, and that just causes my units to bounce all over the place, which is just. unnaceptable for an RTS environment.

Apply a rigidbody and use velocity.