如何将UI图像移动到触摸位置?

时间:2015-10-01 12:43:33

标签: unity3d touch screen mouse-position

我在场景中有一张图片。现在,当我将移动设备触摸到特定位置时,我希望图像移动到此位置。

我该怎么做?

我写了这个:

transform.position = Input.mousePosition;

但这不起作用。好的,它正常工作,但屏幕上不再有图像了。它在右侧的某个地方。

我找到了这个。但它也没有用:

gameObject.GetComponent<RectTransform>().localPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);

问题在于,当我触摸屏幕左下方(移动)时,对象位于屏幕的中央。

3 个答案:

答案 0 :(得分:4)

您可以通过将以下内容放在附加到其中的脚本中来移动UI Image:

void Update() {

    for (var i = 0; i < Input.touchCount; i++) {

        if (Input.GetTouch(i).phase == TouchPhase.Began) {

            // assign new position to where finger was pressed
            transform.position = new Vector3 (Input.GetTouch(i).position.x Input.GetTouch(i).position.y, transform.position.z);

        }

    }    

}

答案 1 :(得分:1)

使用 gameobject.transform.position = camera.ScreenToWorldPoint(Input.mousePosition);

for Desktop。对于移动设备,您希望将InputmousePostion替换为input.getTouch[i].position

答案 2 :(得分:0)

我知道这是一篇旧帖子,但这花费的时间比它应该的要长,所以我想我会分享我的解决方案,以防它帮助其他人尝试做同样的事情。

                    var touchpoint = Instantiate(Resources.Load("prefabs/touchpoint"), new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
                //set it parent to the main canvas
                touchpoint.transform.parent = MainCanvas.transform;
                //convert touch position to localposition reletive to canvas
                Vector2 localPos;
                RectTransformUtility.ScreenPointToLocalPointInRectangle(MainCanvasRect, new Vector3(t.position.x, t.position.y, 0), null, out localPos);
                //set position on canvas
                touchpoint.transform.localPosition = localPos;