世界坐标转到UGUI坐标

public static Vector3 WorldToUI(Camera camera,Vector3 pos){
        CanvasScaler scaler = GameObject.Find("UIRoot").GetComponent<CanvasScaler>();

        float resolutionX = scaler.referenceResolution.x;
        float resolutionY = scaler.referenceResolution.y;

        Vector3 viewportPos = camera.WorldToViewportPoint(pos);

        Vector3 uiPos = new Vector3(viewportPos.x * resolutionX - resolutionX * 0.5f,
            viewportPos.y * resolutionY - resolutionY * 0.5f,0);

        return uiPos;
}
public static Vector2 WorldToUIPoint(Transform worldGo)
    {
        Vector2 pos;
        RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
            gameCamera.WorldToScreenPoint(worldGo.transform.position), canvas.worldCamera, out pos);
        RectTransform rect = transform.transform as RectTransform;
        return pos;
}

原文地址:https://www.cnblogs.com/unity3ds/p/9928609.html

时间: 2024-08-06 14:30:21

世界坐标转到UGUI坐标的相关文章

将世界坐标转成NGUI坐标

将世界坐标转成NGUI坐标,这个中间需要一个屏幕坐标,可参考如下代码: /// <summary> /// 将世界坐标转成UI坐标 /// </summary> /// <param name="wordPos">Word position.</param> public Vector3 wordPos_to_uiPos(Vector3 wordPos) { Vector3 screenPos = Camera.main.WorldToS

坐标笔记

UI坐标 UI坐标就是Android和iOS等应用开发的时候使用的二维坐标系.它的原点是在左上角的. UI坐标原点是在左上角,x轴向右为正,y轴向下为正.我们在Android和iOS等平台使用的视图.控件等都是遵守这个坐标系.然而在Cocos2d-x默认不是采用UI坐标,但是有的时候也会用到UI坐标,例如在触摸事件发生的时候,我们会获得一个触摸对象(Touch),触摸对象(Touch)提供了很多获得位置信息的函数,如下面代码所示: CCPoint touchLocation = touch->g

摄像机标定用于机械臂抓举等(利用标定将图像上的点映射为三维坐标)

在实验室或者是工程上,我们常常需要将拍摄到的图像的二维图像坐标来计算三维坐标. 如上图所示,我们有上图这样的一副图片.我们需要将物体和机械臂的三维位置算出来,使得机械臂能够精确的抓住物体. 我们采用张正友标定的方法标定出内外参数,利用其内参与外参数算出其对应的三维坐标.具体公式略!可以参考张PAMI的论文. /*/ //author:YeahPingYE //function: //time:2014/11/25 // // // // // //*/ #include<highgui.h>

Unity UGUI 实现简单拖拽功能

说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugui坐标),这两个坐标是不一样的,所以拖拽就需要转换. 因为鼠标的移动是屏幕坐标,而 UI 的移动是ugui坐标.转换的方法: RectTransformUtility.ScreenPointToLocalPointInRectangle ( - ); 这个方法可以把屏幕坐标转换成 ugui 坐标.这里我们只需要知道 UI 的坐标和鼠标的坐标是不一样的,他

Unity Ugui射线坐标转换总结

世界空间中的点坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(cam, worldPos.transform.position); UGUI物体的坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(canvas.worldCamera, uguiObj.transform.position); 屏幕坐标转换到UGUI坐标: Vector3 wor

cocos2dx中的坐标体系

1.UI坐标系和GL坐标系 2.本地坐标与世界坐标 本地坐标是一个相对坐标,是相对于父节点或者你指明的某个节点的相对位置来说的,本地坐标的原点在参考节点的左下角 世界坐标是一个绝对的坐标,是以屏幕的左下角为坐标原点,与GL坐标是重合的. 3.Ui坐标与GL坐标和Node坐标 UI坐标是以UI坐标系来计算的,又叫屏幕坐标,y轴向下,在某些游戏中需要使用到屏幕坐标与GL坐标的转换 GL坐标即世界坐标,是一个绝对的坐标,y轴向上 Node坐标即节点坐标,又叫本地坐标,是一个相对的坐标,是以父节点,或者

unity中 UGUI的按下、拖动接口事件的实现

using UnityEngine; using System.Collections.Generic; using DG.Tweening; using UnityEngine.EventSystems; using UnityEngine.UI; public class testUI : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IDragHandler, IEndDragHan

使用OSG显示点云时,如何正确将空白处屏幕坐标转为最接近点云的世界坐标

在OSG中绘制点云,实现画/测点.线等功能时,需要捕捉点云的坐标,但是要在空白区域绘制或测量时,就获取不到点云坐标了. 为了解决这个问题,自己推导出一个将点云空白处屏幕坐标转为最接近点云坐标的算法: 思路是:在每一次捕获真实点云时,即记录下当前点云坐标(lastCloudPoint):空白区域测点时,先将屏幕坐标转为虚拟的世界坐标,然后将坐标投影到 由 eye→center方向(eyeForward)作为法线且经过lastCloudPoint 的虚拟平面上,进而得到最靠近点云的坐标. 实际上,先

Kinect用体感来实现UI控件的点击

用体感来实现UI控件的点击,如点击按钮. 做法:用一个图片表示左手手掌,图片位置追踪左手手掌移动,当手掌位于UI控件的矩形内时,握拳表示点击该控件. using UnityEngine; using System.Collections; using UnityEngine.UI; /// <summary> /// 用Kinect实现UI的点击:追踪左手手掌,移动到UI矩形内握拳表示点击该按钮. /// </summary> public class UIClick : Mono