编程语言
首页 > 编程语言> > c#-将播放器移动到精确的触摸/鼠标单击位置

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);
    }   

更新.显然,当我单击记录的位置(以及精灵将移动到的位置)时,直接在相机上.参考图片
Click

解决方法:

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