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

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

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

Camera.main.WorldToScreenPoint();

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

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

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

Unity3D坐标转换——3D物体在屏幕上的坐标赋值给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值增加一些(是的,我就是为了做一个人物头顶扣血的数字显示纠结了这么久!)