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

3

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

我该怎么做呢?

我写了这个代码:

transform.position = Input.mousePosition;

但这并不起作用。好的,它正在工作,但图像不再在屏幕上了。它在右侧某处。
我找到了这个。但它也不起作用:
gameObject.GetComponent<RectTransform>().localPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);

问题在于,当我在手机屏幕的左下角触摸时,该对象会出现在屏幕中央。

3个回答

3
您可以通过将以下内容放入附加到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

使用 gameobject.transform.position = camera.ScreenToWorldPoint(Input.mousePosition); 来实现桌面端。对于移动端,你需要用 input.getTouch[i].position 替换 InputmousePostion


但是现在,对象现在位于左下角的点(0,0)。还尝试了桌面版本。 - Johnny

1

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

                    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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接