- Home /
Camera movement buggy on collision
Whenever an object collides with my player a certain way my camera goes AWOL as seen here any idea why?
Code for the camera:
public class ThirdPersonCameraController : MonoBehaviour
{
public float rotSpeed = 2;
private Transform Target, Player;
float mX, mY;
public Transform obstruction;
float zoomspeed = 2f;
void Start()
{
Target = this.transform.parent;
Player = Target.transform.parent;
obstruction = Target;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
private void LateUpdate()
{
CamControl();
ViewObstructed();
}
void CamControl()
{
mX += Input.GetAxis("Mouse X") * rotSpeed;
mY -= Input.GetAxis("Mouse Y") * rotSpeed;
mY = Mathf.Clamp(mY, -35, 60);
transform.LookAt(Target);
Target.rotation = Quaternion.Euler(mY, mX, 0);
Player.rotation = Quaternion.Euler(0, mX, 0);
}
void ViewObstructed()
{
RaycastHit hit;
if(Physics.Raycast(transform.position, Target.position - transform.position, out hit, 4.5f))
{
if (hit.collider.gameObject.tag != "Player")
{
obstruction = hit.transform;
obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
if (Vector3.Distance(obstruction.position, transform.position) >= 3f && Vector3.Distance(transform.position, Target.position) >= 1.5f)
{
transform.Translate(Vector3.forward * zoomspeed * Time.deltaTime);
}
}
else
{
obstruction.gameObject.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
if (Vector3.Distance(transform.position, Target.position) < 4.5f)
{
transform.Translate(Vector3.back * zoomspeed * Time.deltaTime);
}
}
}
}
}
Comment
Your answer
