Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using CodeMonkey.Utils;
  5.  
  6.  
  7. public class Window_QuestPointer : MonoBehaviour {
  8.  
  9. [SerializeField] private Camera uiCamera;
  10.  
  11.  
  12.  
  13. private Vector3 targetPosition;
  14. private RectTransform pointerRectTransform;
  15.  
  16. private void Awake ()
  17. {
  18. targetPosition = GameObject.FindWithTag("Target").transform.position;
  19. pointerRectTransform = transform.Find ("Pointer").GetComponent<RectTransform> ();
  20. }
  21. private void Update (){
  22. Vector3 toPosition = targetPosition;
  23. Vector3 fromPosition = Camera.main.transform.position;
  24. fromPosition.z = 0f;
  25. Vector3 dir = (toPosition - fromPosition).normalized;
  26. float angle = UtilsClass.GetAngleFromVectorFloat(dir);
  27. pointerRectTransform.localEulerAngles = new Vector3 (0, 0, angle);
  28.  
  29. float borderSize = 40f;
  30.  
  31. Vector3 targetPositionScreenPoint = Camera.main.WorldToScreenPoint (targetPosition);
  32. bool isOffscreen = targetPositionScreenPoint.x <= borderSize || targetPositionScreenPoint.x >= Screen.width - borderSize || targetPositionScreenPoint.y <= borderSize || targetPositionScreenPoint.y >= Screen.height - borderSize;
  33. Debug.Log (isOffscreen + " " + targetPositionScreenPoint);
  34.  
  35. if(isOffscreen){
  36. Vector3 cappedTargetScreenPosition = targetPositionScreenPoint;
  37. cappedTargetScreenPosition.x = Mathf.Clamp (cappedTargetScreenPosition.x, borderSize, Screen.width - borderSize);
  38. cappedTargetScreenPosition.y = Mathf.Clamp (cappedTargetScreenPosition.y, borderSize, Screen.height - borderSize);
  39.  
  40. Vector3 pointerWorldPosition = uiCamera.ScreenToWorldPoint (cappedTargetScreenPosition);
  41. pointerRectTransform.position = pointerWorldPosition;
  42. pointerRectTransform.localPosition = new Vector3 (pointerRectTransform.localPosition.x, pointerRectTransform.localPosition.y, 0f);
  43.  
  44. }
  45. else{
  46. Vector3 pointerWorldPosition = uiCamera.ScreenToWorldPoint (targetPositionScreenPoint);
  47. pointerRectTransform.position = pointerWorldPosition;
  48. pointerRectTransform.localPosition = new Vector3 (pointerRectTransform.localPosition.x, pointerRectTransform.localPosition.y, 0f);
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement