2017-03-16 307 views
1

我是Unity新手,我对基本触摸操作没有可选的自动转换为鼠标有点惊讶。好吧,我已经后2小时搜索发现至少没有..不管怎么说..我有以下脚本来拖动一个2D精灵:Unity 3D中onMouseDrag的简单触摸

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

看到我的问题在这里:http://stackoverflow.com/a/41392130/6786634我认为这已经有一个答案。 –

+0

这是用于UI的权利?我正在寻找拖动非UI的精灵 – raphadko

+1

新的UI API可用于移动和桌面。看到它在那里描述的帖子评论,答案也有非UI对象。 –

回答

1

正如@DennisLiu所说:如果你看看@Programmer's answer的结尾,你会发现用3D对象(或简单的非UI对象)来实现它的方法。最简单的方法来实现你要寻找的是使用EventSystem组件与PhysicRaycaster(相同默认GraphicRaycaster用于UI光线投射,但3D对象):

  • 添加PhysicRaycasterMainCamera对象(这种那些需要相机
  • 在对象上添加的EventSystem你想
  • 添加InputModule(可独立触摸一个在你的情况下)相同的对象的EventSystem组件

然后你只需要订阅事件@Programmer解释。
您可以找到支持事件的列表here