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

How can I move an UI Image to a touch position?

我有现场图。现在,当我在移动设备上触摸到特定位置时,我希望图像移动到该位置。

我该怎么做?

我写了这个:

transform.position = Input.mousePosition;

但这行不通。好的,它工作正常,但图像不再出现在屏幕上。它在右边的某个地方。

我找到了这个。但它也不起作用:

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

问题是,当我触摸屏幕左下角(移动设备)时,对象位于屏幕中央。

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

桌面版。对于移动设备,您要将 InputmousePostion 替换为 input.getTouch[i].position

您可以移动 UI 图像,方法是将以下内容放入附加的脚本中:

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

        }

    }    

}

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

                    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;