Check out example codes for "unity how to make a gameobject slowly look at a position". It will help you in understanding the concepts better.

Code Example 1

Quaternion lookAtSlowly(Transform t , Vector3 target , float speed){
  //(t) is the gameobject transform
  //(target) is the location that (t) is going to look at
  //speed is the quickness of the rotation
   Vector3 relativePos = target - t.position;
   Quaternion toRotation = Quaternion.LookRotation(relativePos);
   return Quaternion.Lerp(t.rotation, toRotation, speed * Time.deltaTime);

void update()
  transform.rotation = lookAtSlowly(transform , new Vector3(0,0,0) , 1);

Code Example 2

/// <summary>
    /// Rotate a gameobject to face a direction in 2D space with offet
    /// </summary>
    /// <param name="target"></param>
    /// <param name="RotationSpeed"></param>
    /// <param name="offset"></param>
    private void RotateGameObject(Vector3 target, float RotationSpeed, float offset)
        //get the direction of the other object from current object
        Vector3 dir = target - transform.position;
        //get the angle from current direction facing to desired target
        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
        //set the angle into a quaternion + sprite offset depending on initial sprite facing direction
        Quaternion rotation = Quaternion.Euler(new Vector3(0, 0, angle + offset));
        //Roatate current game object to face the target using a slerp function which adds some smoothing to the move
        transform.rotation = Quaternion.Slerp(transform.rotation, rotation, RotationSpeed * Time.deltaTime);

Learn ReactJs, React Native from