- Home /
3rd person camera bugs when moving backwards
So I'm using a 3rd person camera script from https://www.youtube.com/watch?v=LbDQHv9z-F0, it works perfectly fine except when I move backwards . . .
void Awake() { dollyDir = transform.localPosition.normalized; distance = transform.localPosition.magnitude; }
void Update()
{
Vector3 desiredCameraPos = transform.parent.TransformPoint(dollyDir * (maxDistance));
RaycastHit hit;
if (Physics.Linecast(transform.parent.position, desiredCameraPos, out hit))
{
distance = Mathf.Clamp((hit.distance * 0.87f), minDistance, maxDistance);
}
else
{
distance = maxDistance;
}
When I move backwards the if statement above becomes true, but it's only supposed to be true when there is something between another game object which is the parent of the main camera, and the desiredCameraPos. The min distance is how much the camera will zoom when colliding, and the max distance is the regular camera offset from the player. Any suggestions or possible suggestions would be greatly appreciated. Also here are the camera follow and player movement script. The script above was the Cameracollision script attached to the main camera. The Camera follow is attached to a separate game object (the one I named earlier) that is the parent of the main camera.
float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical");
Vector3 move = (transform.right * x + transform.forward * y);
move.Normalize();
rb.velocity = new Vector3(move.x * speed * Time.deltaTime, rb.velocity.y, move.z * speed * Time.deltaTime);
void Start() { Vector3 rot = transform.localRotation.eulerAngles; rotY = rot.y; rotX = rot.x; Cursor.lockState = CursorLockMode.Locked; }
void LateUpdate()
{
CameraUpdate();
mouseX = Input.GetAxis("Mouse X");
mouseY = -Input.GetAxis("Mouse Y");
rotY += mouseX * sensitivity * Time.deltaTime;
rotX += mouseY * sensitivity * Time.deltaTime;
rotX = Mathf.Clamp(rotX, -clampAngle, clampAngle);
Quaternion localRotation = Quaternion.Euler(rotX, rotY, 0.0f);
transform.rotation = localRotation;
}
void CameraUpdate()
{
float step = cameraSpeed * Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, player.position, step);
}
}
Your answer
Follow this Question
Related Questions
Camera follow player with procedural generation 3 Answers
[SOLVED] Third Person Spherically Orbiting Camera 1 Answer
camera not rotating with body 0 Answers
Third person WOW like camera 1 Answer
Will someone please help me??? 2 Answers