现在用到把世界坐标转换成平面坐标。
设置项目分辨率为1920 * 1080
点击场景把场景位置转换成screen坐标所以用到以下方法
var touchWorldPos = …//点击的世界坐标。(当然也可以随便用一个场景物体位置做为参照的世界坐标)
var outPos = new Vec3();
camera.worldToScreen(touchWorldPos,outPos);
输出outPos 发现。
点击左下角outPos输出(0,0)
点击右上角outPos输出(960,540)
疑惑的是右上角世界坐标转换成平面坐标,正好是项目分辨率的一半,说明世界坐标转换成屏幕坐标刚好是屏幕坐标的一半。为什么要这样做,开发者也不能直接用这样的值,要用也是把输出的屏幕位置 * 2 才是正确的屏幕坐标。官方引擎组给个解释啊,为什么不能直接转换成正确的屏幕坐标
所以目前正确使用世界坐标转屏幕坐标的用法是这样
var touchWorldPos = …//点击的世界坐标
var outPos = new Vec3();
camera.worldToScreen(touchWorldPos,outPos);
outPos = outPos.multiplyScalar(2); //乘以2才能得出正确的转换坐标。但是感觉这样设定是多此一举。camera直接把正式坐标转换出来不就好了吗。