Character bounces off walls, and drops to the ground on movement

Hi guys, I am making a click to move game. Think of Diablo. At the moment the character only moves with the click of the mousebutton, and has a rigidbody attached to it to apply some physics. The problem is that whenever the character moves at a faster speed it falls (Not through the ground), but falls to ground, or whenever it collides with a fall it will bounce and fall. I just want it to collide and stop.

Right now I am moving my character with transform, but I would also like your input if I should move it with Rigidbody instead. In the end it is going to be a mobile game where you move the character with your finger.

Just in case, after I have managed to fix this I will apply animations to the character.

Here is a little gif showing what is happening:

I can imagine that I can set the speed to 0 when my object is colliding with 1 particular object, but do I really have to do that FOR EVERY OBJECT? It also doesn’t fix the problem that my character walks and falls.

Here is the movement script I found off the internet:

using UnityEngine;
using System.Collections;

public class ClickToMove : MonoBehaviour {
    private Transform myTransform;              // this transform
    private Vector3 destinationPosition;        // The destination Point
    private float destinationDistance;          // The distance between myTransform and destinationPosition

    public float moveSpeed;                     // The Speed the character will move



    void Start()
    {
        myTransform = transform;                            // sets myTransform to this GameObject.transform
        destinationPosition = myTransform.position;         // prevents myTransform reset
    }

    void Update()
    {

        // keep track of the distance between this gameObject and destinationPosition
        destinationDistance = Vector3.Distance(destinationPosition, myTransform.position);

        if (destinationDistance < .5f)
        {       // To prevent shakin behavior when near destination
            moveSpeed = 0;
        }
        else if (destinationDistance > .5f)
        {           // To Reset Speed to default
            moveSpeed = 10;
        }


        // Moves the Player if the Left Mouse Button was clicked
        if (Input.GetMouseButtonDown(0) && GUIUtility.hotControl == 0)
        {

            Plane playerPlane = new Plane(Vector3.up, myTransform.position);
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            float hitdist = 0.0f;

            if (playerPlane.Raycast(ray, out hitdist))
            {
                Vector3 targetPoint = ray.GetPoint(hitdist);
                destinationPosition = ray.GetPoint(hitdist);
                Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
                myTransform.rotation = targetRotation;
            }
        }

        // To prevent code from running if not needed
        if (destinationDistance > .5f)
        {
            myTransform.position = Vector3.MoveTowards(myTransform.position, destinationPosition, moveSpeed * Time.deltaTime);
        }
    }


}

You might just need to set up your rigidbody constraints;