我已将以下脚本附加到Image
内的Canvas
上:
public class DragMe : MonoBehaviour, IDragHandler
{
public void OnDrag(PointerEventData eventData)
{
this.transform.localPosition += (Vector3)eventData.delta;
}
}
问题在于,当我进一步拖动时,Image
从指针下方逐渐消失。当我拖动回到起始位置时,Image
返回到手指/指针下方的位置。
将代码更改为:
this.transform.position = eventData.position;
使对象跳到其他地方。
非常感谢您的帮助。
更新: 伙计们,如果您阅读了我的代码,并且发现了重复的问题,那么您看到的答案就是我的问题!但这有一个问题,即该对象不会停留在拖动的手指/指针下方,并且随着您不断拖动而不断远离!
更新2:
Image
:
画布:
相机:
答案 0 :(得分:2)
如果相机的视口未更改,最好使用Screen Space - Overlay
。然后以下代码将起作用:
this.transform.position = eventData.position;
要使用Screen Space - Camera
,您需要将事件位置转换为摄影机空间:
Vector3 position = eventData.position;
var canvas = image.canvas;
position.z = canvas.planeDistance;
image.transform.position = canvas.worldCamera.ScreenToWorldPoint(position);