将播放器移动到精确触摸/鼠标单击位置
在我的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); }