将播放器移动到准确的 touch/mouse 点击位置
Move player to exact touch/mouse click location
在我的 2D unity 游戏中,我试图将我的精灵移动到 touch/cursor 的位置(现在是鼠标点击)。
我的精灵在位置 (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
returns 像素坐标值。您需要将其转换为世界坐标。
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);
}
在我的 2D unity 游戏中,我试图将我的精灵移动到 touch/cursor 的位置(现在是鼠标点击)。
我的精灵在位置 (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
returns 像素坐标值。您需要将其转换为世界坐标。
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);
}