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?
`