Smooth Camera Follow Script, Weird Movement... Please help!

I am trying to get my camera to have a smooth follow for a spaceship. The script I made works pretty well, but has issues at certain angles, causing the camera to move erratically.

The way I set it up is to place my camera as a child of an empty gameobject that is going to be the camera’s pivot point. The camera is about 200 units from the origin and looking at the origin. Here’s the script I put on the camera pivot gameobject:

` using UnityEngine;
using System.Collections;

public class SmoothCamera : MonoBehaviour {
	public Transform Target;
	public float PitchDampening = 3.0f;
	public float YawDampening = 3.0f;
	public float RollDampening = 3.0f;
	public float Height = 10.0f;
	
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
	
	void FixedUpdate () {
		Vector3 wantedAngle;
		Quaternion quat;
		
		transform.Translate(Target.position);
		wantedAngle = Target.eulerAngles;
		
		wantedAngle.x = Mathf.LerpAngle(transform.eulerAngles.x, wantedAngle.x, Time.deltaTime * PitchDampening);
		wantedAngle.y = Mathf.LerpAngle(transform.eulerAngles.y, wantedAngle.y, Time.deltaTime * YawDampening);
		wantedAngle.z = Mathf.LerpAngle(transform.eulerAngles.z, wantedAngle.z, Time.deltaTime * RollDampening);

		
		quat = Quaternion.Euler(wantedAngle);
		transform.rotation = quat;
	}
}

This sorta works, but as I said, at certain points, the camera movement gets weird (near the eulerAngle poles I think). Does anyone know a better way to do this that avoids this weird movement behavior?
`

1 Answer

1

Nevermind guys, I figured it out, replacing my old FixedUpdate with this one:

void FixedUpdate () {
	Quaternion quat;
	
	transform.Translate(Target.position);
	quat = Quaternion.Lerp(transform.rotation, Target.rotation, Time.deltaTime * Dampening);

	transform.rotation = quat;
}

The higher the dampening, the tighter the follow.