using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// текст над маркером /// 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(); canvasRect = transform.GetChild(0).GetComponent(); 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; } } }