Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class CameraControl : MonoBehaviour
- {
- public bool rotate = true;
- public float mouseSensitivity = 6f;
- public float scrollSensitivity = 8f;
- public float scrollDampening = 10f;
- public float orbitDampening = 13f;
- public float cameraSpeed = 0.7f;
- public float cameraSpeedDampening = 0.03f;
- public float speedY = 0;
- float speedX = 0;
- public bool cameraEnabled = false;
- private Transform xFormParent;
- private Transform xFormParentParent;
- private Transform xFormCamera;
- public Vector3 startPosition;
- public float positionY;
- public float positionX;
- public Vector3 localRotation;
- public float cameraDistance = 20f;
- private void Start()
- {
- this.xFormCamera = this.transform;
- this.xFormParent = this.transform.parent;
- this.xFormParentParent = this.transform.parent.parent;
- localRotation.x = -50f;
- localRotation.y = 30f;
- cameraDistance = 20f;
- startPosition = transform.position;
- positionY = startPosition.y;
- }
- void LateUpdate()
- {
- #region enableCamera
- if (Input.GetKey(KeyCode.LeftAlt) && Input.GetKey(KeyCode.Mouse0) || Input.GetKey(KeyCode.Mouse2))
- cameraEnabled = true;
- else
- cameraEnabled = false;
- #endregion
- #region rotateCamera
- if (cameraEnabled)
- {
- //Camera Rotation based on mouse coordinates
- if(Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y" ) != 0)
- {
- localRotation.x += Input.GetAxis("Mouse X") * mouseSensitivity;
- localRotation.y -= Input.GetAxis("Mouse Y") * mouseSensitivity;
- //Clamp the y Rotation to horizon and not flipping over at the top
- if (localRotation.y < 0f)
- localRotation.y = 0f;
- else if (localRotation.y > 90f)
- localRotation.y = 90f;
- }
- }
- #endregion
- #region zooming
- //zooming from Mouse Scroll wheel
- if (Input.GetAxis("Mouse ScrollWheel") != 0f)
- {
- float scrollAmount = Input.GetAxis("Mouse ScrollWheel") * scrollSensitivity;
- //makes camera zoom faster the further away it is
- scrollAmount *= (this.cameraDistance * 0.3f);
- this.cameraDistance += scrollAmount * -1f;
- //clamp the camera distance
- if (cameraDistance < 2f)
- cameraDistance = 2f;
- else if (cameraDistance > 100f)
- cameraDistance = 100f;
- }
- #endregion
- #region CameraRig
- //Actual Camera Rig Transform
- Quaternion QT = Quaternion.Euler(localRotation.y, 0, 0);
- Quaternion QTM = Quaternion.Euler(0, localRotation.x, 0);
- this.xFormParent.rotation = Quaternion.Lerp(this.xFormParent.rotation, QT, Time.deltaTime * orbitDampening);
- this.xFormParentParent.rotation = Quaternion.Lerp(this.xFormParentParent.rotation, QTM, Time.deltaTime * orbitDampening);
- /*if (this.xFormCamera.localPosition.z != this.cameraDistance * -1f)
- {
- this.xFormCamera.localPosition = new Vector3(0f, 0f, Mathf.Lerp(this.xFormCamera.localPosition.z, this.cameraDistance * -1f, Time.deltaTime * scrollDampening));
- }*/
- #endregion
- //Camera Movement
- #region speedup
- if (Input.GetKey(KeyCode.LeftShift))
- {
- cameraSpeed = 1.3f;
- }
- else
- cameraSpeed = 0.7f;
- #endregion
- #region moveForwardBackward
- if (Input.GetKey(KeyCode.W))
- {
- MoveCamera();
- speedY += cameraSpeedDampening;
- if (speedY >= cameraSpeed)
- speedY = cameraSpeed;
- }
- else if (Input.GetKey(KeyCode.S))
- {
- MoveCamera();
- speedY -= cameraSpeedDampening;
- if (speedY <= cameraSpeed * -1)
- speedY = cameraSpeed * -1;
- }
- else if (speedY < 0.03 && speedY > -0.03)
- speedY = 0;
- else if (speedY > 0.01)
- {
- MoveCamera();
- speedY -= cameraSpeedDampening;
- }
- else if (speedY < -0.01)
- {
- MoveCamera();
- speedY += cameraSpeedDampening;
- }
- #endregion
- #region moveSideways
- if (Input.GetKey(KeyCode.A))
- {
- MoveCamera();
- speedX += cameraSpeedDampening;
- if (speedX >= cameraSpeed)
- speedX = cameraSpeed;
- }
- else if (Input.GetKey(KeyCode.D))
- {
- MoveCamera();
- speedX -= cameraSpeedDampening;
- if (speedX <= cameraSpeed * -1)
- speedX = cameraSpeed * -1;
- }
- else if (speedX < 0.03 && speedX > -0.03)
- speedX = 0;
- else if (speedX > 0.01)
- {
- MoveCamera();
- speedX -= cameraSpeedDampening;
- }
- else if (speedX < -0.01)
- {
- MoveCamera();
- speedX += cameraSpeedDampening;
- }
- #endregion
- }
- void MoveCamera()
- {
- positionY += speedY;
- positionX += speedX;
- transform.parent.parent.position = new Vector3(5 + positionY, 1, -25+positionX);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement