多语言展示
当前在线:539今日阅读:31今日分享:25

unity 怎样正确获取2d世界坐标

unity 现在有非常强大的2d游戏开发功能了,但是有时候2d坐标获取老出问题,获取成3d世界坐标,这里说一下怎做。我在做这个战棋开发时发现的问题:http://jingyan.baidu.com/article/preview?eidEnc=72ee561a58604ae16138df33
工具/原料
1

一台电脑

2

unity4.0

方法/步骤
1

我们一般怎么获取鼠标的位置呢,用Input.mousePosition但在2D场景中,就会出问题,你会发现获取的鼠标的世界坐标完全与2D场景不符,就像这样那怎么办呢?

2

用Ray ray = camera.ScreenPointToRay (Input.mousePosition)我们发送射线到世界坐标系返回屏幕坐标,这样世界坐标就转化为屏幕坐标。因此如下:Ray ray = camera.ScreenPointToRay (Input.mousePosition);RaycastHit hit;Physics.Raycast (ray, out hit);我们发送射线,Physics.Raycast返回射线碰撞到的物体。

3

那么问题又来了,我们发现2d物理碰撞无法被检测到,但物体必须有collider才会被射线检测到,我们只能添加physics而不physics2d了。

4

问题是我们要取得的是鼠标点击位置的坐标,而不是射线获取的物体的坐标,如果按照hit.transfrom.position,无论怎么点,输出坐标都一样,那是因为返回的值都是我们点击的背景地图的坐标。

5

所以我们用hit.point而不是hit.transfrom.position来得到坐标点。看每次都不一样。

6

现在,试一下,是不是能够完美获取鼠标的位置了。

推荐信息