Unity拖动不起作用,对象从指针移开

时间:2019-04-07 02:41:05

标签: c# unity3d

我已将以下脚本附加到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

enter image description here

画布:

enter image description here

相机:

enter image description here

1 个答案:

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