Unity3D坐标转换——3D物体在屏幕上的坐标赋值给UI

老是记不住,今天就写下来吧

我们都知道unity自带转换坐标的方法

Camera.main.WorldToScreenPoint();

只要场景里带有一个camera并且给他附上MainCamera 的tag,就可以使用,参数是你要转换的原始坐标。

但是他转出来的坐标系是下图这样的,从左下角(0,0)开始,到右上角屏幕宽高结束


而我们UI的坐标系确是以屏幕中心为(0,0)点,所以用那个camera方法转出来的结果还要处理一下才能用到UI上;
 

处理方法很简单,坐标系的转换而已,中学应该学过

        var x = Camera.main.WorldToScreenPoint(car.localPosition).x;
        var y = Camera.main.WorldToScreenPoint(car.localPosition).y;

        v.x = x - Screen.width / 2;

        v.y = y - Screen.height / 2;

最后v的结果就是我们要的结果了,可以对v的x,y做一些偏移处理,比如y值增加一些(是的,我就是为了做一个人物头顶扣血的数字显示纠结了这么久!)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值