Unity3D开发之跟随3D物体移动的提示面板

void Update()
    {
        Vector2 pos;
//if 提示面板要跟随鼠标移动 就输入鼠标位置 else if 提示面板要显示在物体上面 输入物体世界坐标转换到屏幕坐标的值
        Vector2 screenPos = isMousePosition == true ? Input.mousePosition : Camera.main.WorldToScreenPoint(worldPosition);

//将屏幕坐标转换成ui局部坐标
        RectTransformUtility.ScreenPointToLocalPointInRectangle(parentRectTransform, screenPos, null, out pos); 
        transform.localPosition = pos;
    }

 另一种方法,代码如下:

void Update()
    {
        screenpos = Camera.main.WorldToScreenPoint(cube.position);
        Tip.transform.position = screenpos;
    }

此种方法必须在screenmode=screemspace-Overlay模式下。即默认模式下,unity令屏幕坐标绑定在世界坐标原点,屏幕坐标的单位是像素,pixel。即1像素=1米。所以在默认模式下就可以将屏幕坐标直接赋值给ui的世界坐标。

默认模式下,世界坐标转换成屏幕坐标返回的screenpos中,x y即为在屏幕上能正确显示的世界坐标xy。z值为摄像机和世界坐标在z分量上的距离。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值