Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class CameraControl : MonoBehaviour
  4. {
  5.  
  6. public bool rotate = true;
  7. public float mouseSensitivity = 6f;
  8. public float scrollSensitivity = 8f;
  9. public float scrollDampening = 10f;
  10. public float orbitDampening = 13f;
  11.  
  12. public float cameraSpeed = 0.7f;
  13. public float cameraSpeedDampening = 0.03f;
  14. public float speedY = 0;
  15. float speedX = 0;
  16.  
  17. public bool cameraEnabled = false;
  18.  
  19. private Transform xFormParent;
  20. private Transform xFormParentParent;
  21. private Transform xFormCamera;
  22.  
  23. public Vector3 startPosition;
  24. public float positionY;
  25. public float positionX;
  26.  
  27. public Vector3 localRotation;
  28. public float cameraDistance = 20f;
  29.  
  30. private void Start()
  31. {
  32. this.xFormCamera = this.transform;
  33. this.xFormParent = this.transform.parent;
  34. this.xFormParentParent = this.transform.parent.parent;
  35.  
  36. localRotation.x = -50f;
  37. localRotation.y = 30f;
  38. cameraDistance = 20f;
  39. startPosition = transform.position;
  40. positionY = startPosition.y;
  41. }
  42.  
  43. void LateUpdate()
  44. {
  45. #region enableCamera
  46. if (Input.GetKey(KeyCode.LeftAlt) && Input.GetKey(KeyCode.Mouse0) || Input.GetKey(KeyCode.Mouse2))
  47. cameraEnabled = true;
  48. else
  49. cameraEnabled = false;
  50. #endregion
  51.  
  52. #region rotateCamera
  53. if (cameraEnabled)
  54. {
  55. //Camera Rotation based on mouse coordinates
  56. if(Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y" ) != 0)
  57. {
  58. localRotation.x += Input.GetAxis("Mouse X") * mouseSensitivity;
  59. localRotation.y -= Input.GetAxis("Mouse Y") * mouseSensitivity;
  60.  
  61. //Clamp the y Rotation to horizon and not flipping over at the top
  62. if (localRotation.y < 0f)
  63. localRotation.y = 0f;
  64. else if (localRotation.y > 90f)
  65. localRotation.y = 90f;
  66. }
  67. }
  68. #endregion
  69.  
  70. #region zooming
  71. //zooming from Mouse Scroll wheel
  72. if (Input.GetAxis("Mouse ScrollWheel") != 0f)
  73. {
  74. float scrollAmount = Input.GetAxis("Mouse ScrollWheel") * scrollSensitivity;
  75.  
  76. //makes camera zoom faster the further away it is
  77. scrollAmount *= (this.cameraDistance * 0.3f);
  78.  
  79. this.cameraDistance += scrollAmount * -1f;
  80.  
  81. //clamp the camera distance
  82. if (cameraDistance < 2f)
  83. cameraDistance = 2f;
  84. else if (cameraDistance > 100f)
  85. cameraDistance = 100f;
  86. }
  87. #endregion
  88.  
  89. #region CameraRig
  90. //Actual Camera Rig Transform
  91. Quaternion QT = Quaternion.Euler(localRotation.y, localRotation.x, 0);
  92. this.xFormParent.rotation = Quaternion.Lerp(this.xFormParent.rotation, QT, Time.deltaTime * orbitDampening);
  93.  
  94. if (this.xFormCamera.localPosition.z != this.cameraDistance * -1f)
  95. {
  96. this.xFormCamera.localPosition = new Vector3(0f, 0f, Mathf.Lerp(this.xFormCamera.localPosition.z, this.cameraDistance * -1f, Time.deltaTime * scrollDampening));
  97. }
  98. #endregion
  99.  
  100.  
  101. //Camera Movement
  102. #region speedup
  103. if (Input.GetKey(KeyCode.LeftShift))
  104. {
  105. cameraSpeed = 1.3f;
  106. }
  107. else
  108. cameraSpeed = 0.7f;
  109. #endregion
  110.  
  111. #region moveForwardBackward
  112. if (Input.GetKey(KeyCode.W))
  113. {
  114. MoveCamera();
  115. speedY += cameraSpeedDampening;
  116. if (speedY >= cameraSpeed)
  117. speedY = cameraSpeed;
  118. }
  119. else if (Input.GetKey(KeyCode.S))
  120. {
  121. MoveCamera();
  122. speedY -= cameraSpeedDampening;
  123. if (speedY <= cameraSpeed * -1)
  124. speedY = cameraSpeed * -1;
  125. }
  126. else if (speedY < 0.03 && speedY > -0.03)
  127. speedY = 0;
  128. else if (speedY > 0.01)
  129. {
  130. MoveCamera();
  131. speedY -= cameraSpeedDampening;
  132. }
  133. else if (speedY < -0.01)
  134. {
  135. MoveCamera();
  136. speedY += cameraSpeedDampening;
  137. }
  138. #endregion
  139.  
  140. #region moveSideways
  141. if (Input.GetKey(KeyCode.A))
  142. {
  143. MoveCamera();
  144. speedX += cameraSpeedDampening;
  145. if (speedX >= cameraSpeed)
  146. speedX = cameraSpeed;
  147. }
  148. else if (Input.GetKey(KeyCode.D))
  149. {
  150. MoveCamera();
  151. speedX -= cameraSpeedDampening;
  152. if (speedX <= cameraSpeed * -1)
  153. speedX = cameraSpeed * -1;
  154. }
  155. else if (speedX < 0.03 && speedX > -0.03)
  156. speedX = 0;
  157. else if (speedX > 0.01)
  158. {
  159. MoveCamera();
  160. speedX -= cameraSpeedDampening;
  161. }
  162. else if (speedX < -0.01)
  163. {
  164. MoveCamera();
  165. speedX += cameraSpeedDampening;
  166. }
  167. #endregion
  168. }
  169.  
  170.  
  171.  
  172. void MoveCamera()
  173. {
  174. positionY += speedY;
  175. positionX += speedX;
  176. this.transform.parent.parent.position = new Vector3(5+positionY, 1, -25+positionX);
  177. }
  178.  
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement