- Home /
Solved!
How to stop camera from spazzing out?
Hey again,
I have an 'Orbit Camera' C# script that I grabbed from the wiki, and modified it a little.
The camera starts spazzing out when the camera is under the ground(plane) or when the camera is in a wall(cube). I tried to resolve it by adding a minimum distance in which the camera can be: if (distance > distanceMin) distance -= hit.distance;
, but it didn't fully work, although it did help a little.
Right now I have this code:
RaycastHit hit;
if (Physics.Linecast(target.position, transform.position, out hit))
{
if (!resetCam)
oldDist = distance;
if (distance > distanceMin)
distance -= hit.distance;
// Just some odd debug.
if (Input.GetButton("Jump"))
Debug.Log(distance);
resetCam = true;
}
else
{
if (resetCam)
{
distance = oldDist;
resetCam = false;
}
}
And after that, I'm setting the camera's position with:
Vector3 position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
transform.position = position;
If you could, please don't just write out the code/answer as it would be helpful if you explain your answer so that I can avoid making this mistake again. Please tell me if you need more code or a better explanation of what's the error. And tell me if you want a web player version to see it for yourself.
A short 6 second video that's showing what is happening. (Note: Click the MP4 button at the top of the page.)
Thank you,
SeeSharp.