我在场景中有一张图片。现在,当我将移动设备触摸到特定位置时,我希望图像移动到此位置。
我该怎么做?
我写了这个:
transform.position = Input.mousePosition;
但这不起作用。好的,它正常工作,但屏幕上不再有图像了。它在右侧的某个地方。
我找到了这个。但它也没有用:gameObject.GetComponent<RectTransform>().localPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
问题在于,当我触摸屏幕左下方(移动)时,对象位于屏幕的中央。
答案 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;