Advertisement
Guest User

Untitled

a guest
May 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using DG.Tweening;
  5.  
  6. public class CamMoving : MonoBehaviour
  7. {
  8. [SerializeField] Rigidbody camRigidbody;
  9. [SerializeField] Camera camera;
  10.  
  11. [SerializeField] float camMoveSpeed;
  12. [SerializeField] float minCamZoom;
  13. [SerializeField] float maxCamZoom;
  14.  
  15. bool isMovingBlocked = false;
  16.  
  17. private void Awake()
  18. {
  19. #if !UNITY_EDITOR
  20. camMoveSpeed *= 3;
  21. #endif
  22. }
  23.  
  24. public void UpdatePos(float velocityX, float velocityZ)
  25. {
  26. if (!isMovingBlocked)
  27. camRigidbody.velocity = new Vector3(velocityX * camMoveSpeed, camRigidbody.position.y, velocityZ * camMoveSpeed);
  28. }
  29.  
  30. public void UpdateZoom(float scale)
  31. {
  32. if (!isMovingBlocked)
  33. camera.fieldOfView = Mathf.Clamp(camera.fieldOfView * scale, minCamZoom, maxCamZoom);
  34. }
  35.  
  36. /// <summary>
  37. /// Блокировать взаимодействие с камерой свайпами
  38. /// </summary>
  39. void BlockMoving(bool isBlock)
  40. {
  41. isMovingBlocked = isBlock;
  42. camRigidbody.velocity = Vector3.zero;
  43. }
  44.  
  45. public void FocusOnObject(Transform target)
  46. {
  47. BlockMoving(true);
  48.  
  49. //Преобразовываем центр экрана в мировые координаты
  50. var screenWorldPosCenter = camera.ViewportToWorldPoint(CamMoveController.CAM_CENTER_VIEWPOINT);
  51.  
  52. //находим нужную позицию для камеры, чтоб позиция соответствовала состоянию, когда обьект в центре экрана
  53. var centeredObject = transform.position - (screenWorldPosCenter - target.position);
  54. centeredObject.y = transform.position.y;
  55.  
  56. camRigidbody.transform.DOMove(centeredObject, 1).OnComplete(() => BlockMoving(false));
  57.  
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement