将播放器移动到精确触摸/鼠标单击位置

在我的2D统一游戏中,我试图将我的精灵移动到我的触摸/光标的位置(现在它是鼠标点击)。

我的精灵在这个位置(173,48,-52.1)。 但是,当我点击一个距离可能只有几个像素的位置时,我的位置变为(399,129,0),我的精灵显然被扔进了巨大的未知数。

if (Input.GetMouseButtonDown(0)) { //fingerPos = Input.GetTouch(0).position; fingerPos = Input.mousePosition; transform.position = fingerPos; Debug.Log(transform.position); } 

编辑

目前的代码

 if (Input.GetMouseButtonDown (0)) { fingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Desktop transform.position = fingerPos; Debug.Log (transform.position); } 

更新 。 显然,当我单击记录的位置(并且精灵移动到的位置)直接在相机上。 参考图像 点击

transform.position是世界坐标。 Input.mousePosition返回像素坐标中的值。 您需要将其转换为世界坐标。

 fingerPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); //Mobile fingerPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Desktop 

然后你可以将它分配到你的位置。

 transform.position = fingerPos; 

编辑

 if (Input.GetMouseButtonDown(0)) { fingerPos = Input.mousePosition; fingerPos.z = 10; fingerPos = Camera.main.ScreenToWorldPoint(fingerPos); transform.position = fingerPos; Debug.Log(transform.position); }