关于如何把2D坐标转换为3D坐标

思想很简单,先获取2D坐标轴上X,Y坐标,然后通过u3d里一个内置函数camera.ScreenToWorldPoint()来获得

我现在举一个例子来说明下具体应用,我现在有一个场景,里面有一个盒子,还有一个main camera,现在我想通过鼠标在屏幕上点击,然后会从main camera的位置发射子弹去击中盒子,所以就需要用到转换坐标的问题了。

再 罗嗦一句,哈哈为啥要非要这么做呢,如果直接使用3D坐标呢?嗯如果直接这样做的话,你的屏幕的不是一个固定的了,你的子弹射击到哪里,你的摄像机也会转 动,而且不是你想要的点,假如我想从在屏幕的左上方去击发子弹,但是不转换坐标的话你的子弹仍然只是从一个固定的点发射。

下面是代码:
我用c#写的,用js的童鞋请不要鄙视我
float distanceFromCamera = 35F;   //子弹发射的点到你摄像机的距离
float X =Input.mousePosition.x;    //屏幕上的x坐标
float y = Input.mousePosition.y    //屏幕上的y坐标
Vector3 targetPoint = Camera.ScreenToWorldPoint(new vector3(x,y,distanceFromCamera));

posted @ 2012-03-21 15:56  渡蓝  阅读(2322)  评论(0)    收藏  举报