码迷,mamicode.com
首页 > 其他好文 > 详细

easy touch利用playmaker拖动ngui对象

时间:2016-04-16 19:26:58      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

最近在学习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状态。

技术分享

easy touch利用playmaker拖动ngui对象

标签:

原文地址:http://blog.csdn.net/wuyt2008/article/details/51163488

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!