easy touch利用playmaker拖动ngui对象
最近在学习unity3d的几个插件。easy touch,playmaker,ngui。为了使几个能够一起使用,还弄了playmaker ngui scripts和easy touch addon 4 playmaker插件。
最近做的一个需要touch拖动一个ngui的2d对象,又想用playmaker来控制。这话怎么说怎么绕啊。反正,是有杀鸡用宰牛刀的感觉。
在easy touch addon 4 playmaker的例子里面有怎么拖动gui对象的示例,不过我在拖动ngui的时候发现总是不对,最后终于找到问题。
不能用playmaker的set position动作去设置推动对象的位置,必须在脚本里用transform.postion=...的方式来设置拖动对象位置。
下面把整个过程演示一遍。
首先建立空的场景,添加一个ngui的2dUI

根据背景大小,设置ui root,这个设置是工作需要,不影响拖动。

摄像头必须注意Layer设置,因为要能被拖动,要和easytouch关联,因为我把unity默认摄像头删了,所以,还要把ngui的摄像头的tag设置为MainCamera

添加一个背景,(无关拖动)

这是要拖动的2d ngui对象,注意Layer,添个自己写的脚本,注意要添加Collider才能被拖动

设置easytouch, 我把例子里的拖成预制件直接拿来用。这里一定要把ngui的摄像机添加进去。选中enable 2d coliider

开始设置playmaker,基本是照抄例子,山寨万岁。

添加变量

设置动作

继续设置动作,这两个状态的动作和例子里一样。

这个是例子里原来的动作,通过set position设置位置

这里,要改用脚本,脚本内容很简单
using UnityEngine;
using System.Collections;
public class mytest : MonoBehaviour {
public void world(Vector3 position){
transform.position = position;
}
}
然后用send message的方法,调用脚本。

ok,万事大吉,那个人现在可以被拖来拖去了。

状态机里面那个奇怪的状态是个全集事件,添加方法如下。必须把easytouch加入到场景才能有这些事件。

添加以后的状态。

另外,再说下运行中,几个状态。
运行以后,对象停在wait for drag状态,
当触摸开始的时候,转到get current状态后又返回wait for drag状态。
发生拖动到时候,转到on drag状态。


