using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class DeviceFollowTarget : MonoBehaviour { public Transform target; public Camera uiCamera; private float offset_Y = 2.5f; private void Start() { GetComponent<Button>().onClick.AddListener(ViewClick); uiCamera = GameObject.Find("Canvas").GetComponent<Canvas>().worldCamera; } public void ViewClick() { MessageDispatcher.SendMessage("FLOORNUMBER", target.GetComponent<DeviceObj>().floorId, "Floor"); Camera.main.GetComponent<CameraOrbit>().SetCameraView(target.position, 15); //if (target) //{ // target.GetComponent<DeviceObj>().ShowList(); //} } private Vector2 WorldPosToUIPos(Vector3 worldPos) { Vector2 world2ScreenPos = Camera.main.WorldToScreenPoint(worldPos); Vector2 uiPos = new Vector2(); RectTransformUtility.ScreenPointToLocalPointInRectangle(transform.parent.GetComponent<RectTransform>(), world2ScreenPos, uiCamera, out uiPos); return uiPos; } private void LateUpdate() { if (gameObject.activeSelf && target) { GetComponent<RectTransform>().anchoredPosition = WorldPosToUIPos(new Vector3(target.transform.position.x, target.transform.position.y + offset_Y, target.transform.position.z)); } } public void SetTarget(DeviceObj deviceObj) { target = deviceObj.transform; } }