简单的触摸相当于Unity 3D中的onMouseDrag

时间:2017-03-16 02:17:09

标签: c# unity3d

我是Unity的新手,我有点惊讶的是没有可选的自动转换基本触摸操作鼠标。好吧,至少没有我在搜索2小时后发现..无论如何..我有以下脚本来拖动2D精灵:

void OnMouseDrag()
{
    if (dragEnabled) { 
        Vector3 point = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, (transform.position.z - Camera.main.transform.position.z)));
        point.z = transform.position.z;
        transform.position = point;
    }
}

非常直截了当.. 但是现在我需要将这项工作用于触摸,但是我发现的每一个解决方案都是从2011年开始,无法工作和/或长达数十行......

是否有一种简单的方法可以将其“转换”为移动设备,或者更好的是,制作一个适用于这两种情况的解决方案?

1 个答案:

答案 0 :(得分:2)

正如@DennisLiu所说:如果你看到@Programmer's answer的结尾,你将找到用3D对象(或简称非UI对象)来做到这一点的方法。实现您正在寻找的内容的最简单方法是使用带有 PhysicRaycaster EventSystem组件(与用于UI光线投射的默认 GraphicRaycaster 相同)对于3D对象):

  • PhysicRaycaster 添加到 MainCamera 对象(这需要相机
  • 在您想要的对象上添加 EventSystem
  • 在与 EventSystem相同的对象上添加输入模块(可以是独立触摸一个) strong>组件

然后你只需订阅@Programmer解释的事件 您可以查看支持的事件列表here