Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using CodeMonkey.Utils;
- public class Window_QuestPointer : MonoBehaviour {
- [SerializeField] private Camera uiCamera;
- private Vector3 targetPosition;
- private RectTransform pointerRectTransform;
- private void Awake ()
- {
- targetPosition = GameObject.FindWithTag("Target").transform.position;
- pointerRectTransform = transform.Find ("Pointer").GetComponent<RectTransform> ();
- }
- private void Update (){
- Vector3 toPosition = targetPosition;
- Vector3 fromPosition = Camera.main.transform.position;
- fromPosition.z = 0f;
- Vector3 dir = (toPosition - fromPosition).normalized;
- float angle = UtilsClass.GetAngleFromVectorFloat(dir);
- pointerRectTransform.localEulerAngles = new Vector3 (0, 0, angle);
- float borderSize = 40f;
- Vector3 targetPositionScreenPoint = Camera.main.WorldToScreenPoint (targetPosition);
- bool isOffscreen = targetPositionScreenPoint.x <= borderSize || targetPositionScreenPoint.x >= Screen.width - borderSize || targetPositionScreenPoint.y <= borderSize || targetPositionScreenPoint.y >= Screen.height - borderSize;
- Debug.Log (isOffscreen + " " + targetPositionScreenPoint);
- if(isOffscreen){
- Vector3 cappedTargetScreenPosition = targetPositionScreenPoint;
- cappedTargetScreenPosition.x = Mathf.Clamp (cappedTargetScreenPosition.x, borderSize, Screen.width - borderSize);
- cappedTargetScreenPosition.y = Mathf.Clamp (cappedTargetScreenPosition.y, borderSize, Screen.height - borderSize);
- Vector3 pointerWorldPosition = uiCamera.ScreenToWorldPoint (cappedTargetScreenPosition);
- pointerRectTransform.position = pointerWorldPosition;
- pointerRectTransform.localPosition = new Vector3 (pointerRectTransform.localPosition.x, pointerRectTransform.localPosition.y, 0f);
- }
- else{
- Vector3 pointerWorldPosition = uiCamera.ScreenToWorldPoint (targetPositionScreenPoint);
- pointerRectTransform.position = pointerWorldPosition;
- pointerRectTransform.localPosition = new Vector3 (pointerRectTransform.localPosition.x, pointerRectTransform.localPosition.y, 0f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement