c#-将播放器移动到精确的触摸/鼠标单击位置
作者:互联网
在我的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);
}
标签:unity5,unity3d,c 来源: https://codeday.me/bug/20191026/1937368.html