Hover object with physics

So, I want an object (especially a cloud) which hovers in the world. Or for simplicity, it just stands in a position. There is nothing under it. It has a mesh collider, and a rigidbody attached to it, with Apply Gravity turned off. Now, our player with a character controller jumps on it, and what I want is that this “cloud” goes down, then goes back to it’s original position. I did not success using physics, because my understanding in physics is pretty bad. I tried using the “push rigid bodies with character controller” script, it works, but I did not know how can I command the cloud to go back to it’s original position

Something like that should work. This works without physics (no need of RigidBody).

Vector3 startPosition;
float fallingSpeed = 5;
bool colliding = false;

void Start() {
    //Saving starting position of cloud
    startPosition = transform.position;

void Update() {
    if(colliding) {
        //If something is colliding with cloud - cloud falling down
        transform.Translate(0, -fallingSpeed * Time.deltaTime, 0);
    else if(trasform.position != startPosition) {
        //If nothing is colliding with cloud - move it to its starting position


void OnCollisionEnter(Collision col) {
    colliding = true;

void OnCollisionExit(Collision col) {
    colliding = false;