Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 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, 0, 0);
  92. Quaternion QTM = Quaternion.Euler(0, localRotation.x, 0);
  93. this.xFormParent.rotation = Quaternion.Lerp(this.xFormParent.rotation, QT, Time.deltaTime * orbitDampening);
  94. this.xFormParentParent.rotation = Quaternion.Lerp(this.xFormParentParent.rotation, QTM, Time.deltaTime * orbitDampening);
  95.  
  96. /*if (this.xFormCamera.localPosition.z != this.cameraDistance * -1f)
  97. {
  98. this.xFormCamera.localPosition = new Vector3(0f, 0f, Mathf.Lerp(this.xFormCamera.localPosition.z, this.cameraDistance * -1f, Time.deltaTime * scrollDampening));
  99. }*/
  100. #endregion
  101.  
  102.  
  103. //Camera Movement
  104. #region speedup
  105. if (Input.GetKey(KeyCode.LeftShift))
  106. {
  107. cameraSpeed = 1.3f;
  108. }
  109. else
  110. cameraSpeed = 0.7f;
  111. #endregion
  112.  
  113. #region moveForwardBackward
  114. if (Input.GetKey(KeyCode.W))
  115. {
  116. MoveCamera();
  117. speedY += cameraSpeedDampening;
  118. if (speedY >= cameraSpeed)
  119. speedY = cameraSpeed;
  120. }
  121. else if (Input.GetKey(KeyCode.S))
  122. {
  123. MoveCamera();
  124. speedY -= cameraSpeedDampening;
  125. if (speedY <= cameraSpeed * -1)
  126. speedY = cameraSpeed * -1;
  127. }
  128. else if (speedY < 0.03 && speedY > -0.03)
  129. speedY = 0;
  130. else if (speedY > 0.01)
  131. {
  132. MoveCamera();
  133. speedY -= cameraSpeedDampening;
  134. }
  135. else if (speedY < -0.01)
  136. {
  137. MoveCamera();
  138. speedY += cameraSpeedDampening;
  139. }
  140. #endregion
  141.  
  142. #region moveSideways
  143. if (Input.GetKey(KeyCode.A))
  144. {
  145. MoveCamera();
  146. speedX += cameraSpeedDampening;
  147. if (speedX >= cameraSpeed)
  148. speedX = cameraSpeed;
  149. }
  150. else if (Input.GetKey(KeyCode.D))
  151. {
  152. MoveCamera();
  153. speedX -= cameraSpeedDampening;
  154. if (speedX <= cameraSpeed * -1)
  155. speedX = cameraSpeed * -1;
  156. }
  157. else if (speedX < 0.03 && speedX > -0.03)
  158. speedX = 0;
  159. else if (speedX > 0.01)
  160. {
  161. MoveCamera();
  162. speedX -= cameraSpeedDampening;
  163. }
  164. else if (speedX < -0.01)
  165. {
  166. MoveCamera();
  167. speedX += cameraSpeedDampening;
  168. }
  169. #endregion
  170. }
  171.  
  172.  
  173.  
  174. void MoveCamera()
  175. {
  176. positionY += speedY;
  177. positionX += speedX;
  178. transform.parent.parent.position = new Vector3(5 + positionY, 1, -25+positionX);
  179. }
  180.  
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement