Change rotation towards second GameObject

Hello!
First of all, English isn’t my mother language, so sorry for mistakes. I have 2 problems (so that’s why I use forum instead of “Questions”). I was searching a web to find a solutions, but I didn’t find any useful answer.
I’m having trouble in set a rotation towards another GameObject. It’s better to see what problem I have.

Visualisation:

As you see, Player moves around Planet (with function RotateAround). Player has Freeze Rotation in Rigidbody2D (to prevent Player from free rotation in jumpPhase, but it can be rotate in contact with another objects) and jump is only function with once added AddForce in two direction (up and horizontal).
I have a “Player” and “Planets”. To Player are attached 3 scripts (OnCollision, Jump and Rolling).

First problem:
In function “OnCollisionEnter” I want to reset Player rotation to put Player on the surface of the planet. As you see I don’t have it, because Player rotates around on new Planet as he’s landed (in this case, on the corner of head). I was trying with “LookAt” function, but it rotates in wrong direction. I was trying also with function “Rotate” after “LookAt”, but in “LookAt” function Player was missing BoxCollider (it was flattened).

S̶e̶c̶o̶n̶d̶ ̶p̶r̶o̶b̶l̶e̶m̶:̶
I̶ ̶w̶a̶n̶t̶ ̶t̶o̶ ̶p̶r̶e̶v̶e̶n̶t̶ ̶P̶l̶a̶y̶e̶r̶ ̶f̶r̶o̶m̶ ̶b̶o̶u̶n̶c̶i̶n̶g̶ ̶o̶n̶ ̶t̶h̶e̶ ̶P̶l̶a̶n̶e̶t̶ ̶(̶P̶l̶a̶n̶e̶t̶s̶ ̶h̶a̶v̶e̶ ̶P̶o̶i̶n̶t̶E̶f̶f̶e̶c̶t̶o̶r̶2̶D̶ ̶w̶i̶t̶h̶ ̶l̶o̶c̶a̶l̶ ̶g̶r̶a̶v̶i̶t̶y̶)̶,̶ ̶s̶o̶ ̶I̶ ̶w̶a̶n̶t̶ ̶t̶o̶ ̶s̶t̶o̶p̶ ̶m̶o̶v̶i̶n̶g̶ ̶P̶l̶a̶y̶e̶r̶ ̶f̶o̶r̶ ̶a̶ ̶o̶n̶e̶ ̶f̶r̶a̶m̶e̶ ̶w̶h̶e̶n̶ ̶"̶O̶n̶C̶o̶l̶l̶i̶s̶i̶o̶n̶E̶n̶t̶e̶r̶"̶ ̶i̶s̶ ̶w̶o̶r̶k̶i̶n̶g̶.̶

I attach “OnCollision” script, maybe it’d help:

    private Rolling rollingScript;
    private Jumping jumpingScript;
    private Rigidbody2D rb2D;
    private bool initiatiorBool = true;
    private Transform transformer;


    void Start()
    {
        rollingScript = GetComponent<Rolling> ();
        jumpingScript = GetComponent<Jumping> ();
        rb2D = GetComponent<Rigidbody2D> ();
    }


    void OnCollisionEnter2D (Collision2D collision)
    {
        if (initiatiorBool == true)
        {
            Debug.Log ("First planet was discovered!");
            rollingScript.currentPlanet = collision.gameObject;
            initiatiorBool = false;
        }


        Debug.Log ("Enter collision");


        if (collision.gameObject.tag == "Planet")
        {
            Debug.Log ("This is a planet!");


            rollingScript.enabled = true;
            jumpingScript.enabled = true;

            rollingScript.nextPlanet = collision.gameObject;
            if(rollingScript.currentPlanet != rollingScript.nextPlanet)
            {
                rollingScript.currentPlanet = rollingScript.nextPlanet;
            }
        }
    }

I have one more problem, but for now I would try to solve it on my own.

Thank you for your time. ;]

Doublepost, because I find answer for second problem and the thread hasn’t got any replay. First trouble is still going.

For the second problem:

rigidbody.velocity = Vector3.zero;

It stops every force on the object. In my case, this line is working.

However, first problem is more difficult to solve. Please help.

EDIT: I think that doublepost after some time is better than creating new thread after a week with the same problem in case no solve. Please correct me, if I’m wrong.