1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- /// <summary>
- /// текст над маркером
- /// </summary>
- public class LabelObjectScript : MonoBehaviour
- {
- //public GameObject target;
- RectTransform canvasRect;
- GameObject text;
- public bool TrackMarker = true;
- // Start is called before the first frame update
- void Start()
- {
- //text = Instantiate(Resources.Load("GameObjects/Capsule", typeof(GameObject))) as GameObject;
- cameraController = Camera.main.GetComponent<CameraController>();
- canvasRect = transform.GetChild(0).GetComponent<RectTransform>();
- text = transform.GetChild(0).GetChild(0).GetChild(0).gameObject;
- }
- // Update is called once per frame
- void Update()
- {
- // Offset position above object bbox (in world space)
- float offsetPosY = transform.position.y + 1.5f;
- // Final position of marker above GO in world space
- Vector3 offsetPos = new Vector3(transform.position.x, offsetPosY, transform.position.z);
- // Calculate *screen* position (note, not a canvas/recttransform position)
- Vector2 canvasPos;
- Vector2 screenPoint = Camera.main.WorldToScreenPoint(offsetPos);
- // Convert screen position to Canvas / RectTransform space <- leave camera null if Screen Space Overlay
- RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, null, out canvasPos);
- // Set
- //markerRtra.localPosition = canvasPos;
- //if(TrackMarker) text.transform.localPosition = canvasPos;
- //else
- text.transform.parent.transform.localPosition = canvasPos;
-
- }
- CameraController cameraController;
- void OnMouseDown()
- {
- if (TrackMarker)
- {
- cameraController.target = transform;
- cameraController.axes = CameraController.RotationAxes.TrackMarker;
- }
- }
- }
|