Unity 屏幕坐标转换世界坐标之物体跟随鼠标移动

Unity 支持坐标的转换,以物体跟随鼠标为例子:

一开始我想到的一种方法是:

//错误实例

public GameObject m_obj;

void Update(){

Vector3 mousePos = Input.mousePosition;//获取鼠标移动位置 

Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);//把鼠标的屏幕坐标转换成世界坐标

m_obj.Transform.position = worldPos;//然后把世界坐标赋予给物体,从而鼠标控制物体移动。

}

结果一运行,没反应,蛋疼,百思不得其解,就以为是input.mousePosition不支持这样转换,然后就新建一个Vector3 = new Vector(100,100,0),希望模拟一下屏幕坐标,再来进行ScreenToWorldPoint()进行转换,结果还是没有反应... 

正当蛋疼时,逛论坛的时候,无意中看到留言里写的代码才明白过来了,正确如下:

public GameObject m_obj;

void Update(){

//Vector3 screenPos = Camera.main.WorldToScreenPoint(m_obj.transform.position);//获取需要移动物体的世界转屏幕坐标

//Vector3 mousePos = Input.mousePosition;//获取鼠标位置

//mousePos.z = screenPos.z;//因为鼠标只有X,Y轴,所以要赋予给鼠标Z轴

//Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);//把鼠标的屏幕坐标转换成世界坐标

//m_obj.position = worldPos;//控制物体移动

}

终于实现了转换之后,对比发现,其实思路是没有错的,但是在于移动的Z轴,原来直接转换的鼠标位置,是只有X、Y轴,唯独缺了Z轴,所以要把需要跟随物体的Z轴赋予给鼠标屏幕位置,然后再进行转换世界坐标,才能做到效果。

刚提到的留言代码转载:http://ask.manew.com/question/20219 

非常感谢,多逛论坛是有好处的。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值