将播放器移动到准确的 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);
}