老是记不住,今天就写下来吧
我们都知道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值增加一些(是的,我就是为了做一个人物头顶扣血的数字显示纠结了这么久!)