2016-11-03 110 views
3

在我的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

回答

4

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

其实在审查,这是行不通完全正确的。角色移动到屏幕上的特定位置。不是我碰到的地方。 – Niana

+0

您的问题**“我的精灵显然投掷到了广阔的未知领域”**这是因为您正在使用'fingerPos = Input.mousePosition'将像素坐标分配给世界坐标。您必须将其转换为世界坐标,就像我在答案中所做的一样。这是你的代码的问题。 **这不起作用,完全正确“**你甚至没有具体说明什么是不工作的,这应该可以解决你的精灵消失的问题 – Programmer

+0

每当我点击屏幕时,调试日志中返回给我的坐标是请看我的代码编辑 – Niana