Was ist der Unterschied zwischen characterController.simpleMove und characterController.move? Zuerst, wie verwendet man diese Funktionen?
Man braucht ein Objekt, an dem ein chracterController angehengt ist.
Dann öffnet man ein neues c# script.
Als aller erstes ruft man den characterController in der startfunktion auf und speichert ihn als Variable.

void start(){
    characterController(der Name unter dem man den characterContoller speichern möchte) = GetComponent<CharacterController>();
}

danach wählt man die Funktion .move oder .simpleMove von dem charackter controller aus und übergibt der Funktion als Parameter einen Vektor3. Den Vektor kann man benennen wie man will. Bei .move muss man mit time.deltaTime multiplizieren, warum erkläre ich später.

void update(){
    chatacterController.move(seeedVector * time.deltaTime);
    oder
    characterController.simpleMove(seeedVector);
}

Und jetzt wo wir wissen wie man diese Funktionen verwendet, erkläre ich wann man sie verwendet und was zu beachten ist oder wo die Unterschiede sind. Die Funktion .simpleMove wird einmal in der Sekunde aufgerufen und bewegt das Objekt dabei jedes mal um die Entfernung die vom Vektor vorgegeben wir. Die bewegung auf der Y- Achse wir dabei nicht ausgeführt, dafür übernimmt .simpleMove das problem mit der Schwerkraft.
.simpleMove wird bei, wie der Name schon sagt, einfachen Bewegungen verwendet, z.B. wenn man eine Kugel durch ein Labyrinth rollen lässt.
Die Funktion .move wird einmal pro Frame aufgerufen und bewegt dabei das Objekt um die Entfernung die der Vektor angibt. Damit bei einer höheren Framerate sich das Objekt gleich schnell bewegt wie bei einer kleineren, muss man mit time.deltaTime multiplizieren. Weiters kann man mit .move auch Bewegungen auf der Y- Achse ausführen. Die Schwerkraft muss man aber selbst Programmieren. .move wird dazu verwendet, einen 1st oder 3rd Person controller zu programmieren, weil für eine Bewegung wie einen Sprung die Y- Achse notwendig ist.