// Script Shoud be placed on Camera.
[SerializeField] private Transform target; // Target
[SerializeField] private Vector3 offset; // Vector3 offset
[SerializeField] [Range(0, 1)] private float smooth= 0.125f; // Smoothing
[SerializeField] [Range(0, 10)] private float Speed = 10f; // Follow Speed
private void FixedUpdate()
{
Vector3 vector = this.target.position + this.offset;
Vector3 position = Vector3.Lerp(base.transform.position, vector, (this.smooth + this.Speed)* Time.deltaTime);
base.transform.position = position;
}
public Transform Target; // Drag the object that will be followed in the inspector.
public Transform Camera; // Drag the camera object in the inspector.
Vector3 tempVec3 = new Vector3(); // Temporary vector 3.
void LateUpdate()
{
// If the target is active in the scene, set the x camera position to target.
if (Target != null)
{
tempVec3.x = Target.position.x;
tempVec3.y = this.transform.position.y;
tempVec3.z = this.transform.position.z;
this.transform.position = tempVec3;
}
// If target is not active in the scene, set the x camera position to itself.
else if (Target == null)
{
tempVec3.x = Camera.position.x;
tempVec3.y = Camera.transform.position.y;
tempVec3.z = Camera.transform.position.z;
Camera.transform.position = tempVec3;
}
}