【问题标题】:Unity drag doesn't work, object moves away from the pointerUnity拖动不起作用,对象从指针移开
【发布时间】:2019-04-07 02:41:05
【问题描述】:

我已将以下脚本附加到Canvas 内的Image

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:

画布:

相机:

【问题讨论】:

标签: c# unity3d


【解决方案1】:

如果相机的视口不变,最好使用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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多