This script can be attached to the mainCamera to have the camera follow the player if there are scrolling images.
From OReilly: Learning 2D Game Development with Unity by Matthew Johnson: Section 11.7 The author say this script is a Unity Script.
Also, you may want to try setting the Player's RigidBody2D Interpolate to Interpolate, as per discussions below
using UnityEngine;
//https://learning.oreilly.com/library/view/learning-2d-game/9780133523416/ch11lev2sec19.html#ch11lev2sec19
//this script can be added to the camera in a 2D game so the camera follows the player
//with smoothed following when the player nears the margins of the camera's view.
public class CameraFollow : MonoBehaviour
{
public float xMargin = 1;
public float yMargin = 1;
public float xSmooth = 4;
public float ySmooth = 4;
public Vector2 maxXAndY; //try values: 35, 15
public Vector2 minXAndY; //try values: -1,0
private Transform player;
void Awake()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
}
bool CheckXMargin()
{
return Mathf.Abs(transform.position.x - player.position.x) > xMargin;
}
bool CheckYMargin()
{
return Mathf.Abs(transform.position.y - player.position.y) > yMargin;
}
void FixedUpdate()
{
TrackPlayer();
}
//set camera to default position
public void ResetPosition()
{
transform.position = new Vector3(0, 0, -10);
}
void TrackPlayer()
{
float targetX = transform.position.x;
float targetY = transform.position.y;
if (CheckXMargin() == true)
{
targetX = Mathf.Lerp(transform.position.x,
player.position.x, xSmooth * Time.deltaTime);
}
if (CheckYMargin() == true)
{
targetY = Mathf.Lerp(transform.position.y,
player.position.y, ySmooth * Time.deltaTime);
}
targetX = Mathf.Clamp(targetX, minXAndY.x, maxXAndY.x);
targetY = Mathf.Clamp(targetY, minXAndY.y, maxXAndY.y);
transform.position = new Vector3(targetX, targetY,
transform.position.z);
}
} //end class