MouseRotateCamera.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. 
  2. // =================================
  3. // Namespaces.
  4. // =================================
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. // =================================
  8. // Define namespace.
  9. // =================================
  10. namespace MirzaBeig
  11. {
  12. namespace Demos
  13. {
  14. // =================================
  15. // Classes.
  16. // =================================
  17. public class MouseRotateCamera : MonoBehaviour
  18. {
  19. // =================================
  20. // Nested classes and structures.
  21. // =================================
  22. // ...
  23. // =================================
  24. // Variables.
  25. // =================================
  26. // ...
  27. public float maxRotation = 5.0f;
  28. public float speed = 2.0f;
  29. public bool unscaledTime;
  30. // =================================
  31. // Functions.
  32. // =================================
  33. void Awake()
  34. {
  35. }
  36. // ...
  37. void Start()
  38. {
  39. }
  40. // ...
  41. void Update()
  42. {
  43. }
  44. // ...
  45. void LateUpdate()
  46. {
  47. Vector2 mousePosition = Input.mousePosition;
  48. float screenHalfWidth = Screen.width / 2.0f;
  49. float screenHalfHeight = Screen.height / 2.0f;
  50. float mouseNormalizedPositionHalfX = (mousePosition.x - screenHalfWidth) / screenHalfWidth;
  51. float mouseNormalizedPositionHalfY = (mousePosition.y - screenHalfHeight) / screenHalfHeight;
  52. Vector3 localEulerAngles = transform.localEulerAngles;
  53. localEulerAngles.y = mouseNormalizedPositionHalfX * -maxRotation;
  54. localEulerAngles.x = mouseNormalizedPositionHalfY * maxRotation;
  55. float deltaTime = (!unscaledTime ? Time.deltaTime : Time.unscaledDeltaTime) * speed;
  56. localEulerAngles.x = Mathf.LerpAngle(transform.localEulerAngles.x, localEulerAngles.x, deltaTime);
  57. localEulerAngles.y = Mathf.LerpAngle(transform.localEulerAngles.y, localEulerAngles.y, deltaTime);
  58. transform.localEulerAngles = localEulerAngles;
  59. }
  60. // =================================
  61. // End functions.
  62. // =================================
  63. }
  64. // =================================
  65. // End namespace.
  66. // =================================
  67. }
  68. }
  69. // =================================
  70. // --END-- //
  71. // =================================