纳金网

标题: 关于Unity3d的多点触屏输入问题 [打印本页]

作者: star-小虎    时间: 2013-10-28 15:49
标题: 关于Unity3d的多点触屏输入问题
最近在用Unity3D做一个2D的android手机休闲游戏,游戏中用两个GUItexture来控制角色左右行走和跳跃,第一次接触U3D觉得还是蛮很容易上手的。我整理了一下Manual里面关于Input的介绍,权当自己的学习小笔记吧。    接下来进入正题,来讨论一下角色控制的一个细节问题——输入。在Unity3D中,游戏中常用的输入设备有键盘,鼠标,多点触摸屏……当然还有摇杆之类的。看了一下虚拟摇杆实现方法,相当简单方便,配合GetAxis()方法天衣无缝。但是我这次开发游戏没用到,就不赘述了。键盘,鼠标作为最传统的输入设备,可以用GetButton(),GetButtonDown(),GetButtonUp(),来获取键盘的输入.一般用GetKey()方法也可以。当然还有GetKeyDown(),GetKeyUP().有什么区别呢?我测试了一下,其实每个key是有自己的名字的.在unity提供的manual里面可以查到。我这里做个笔记,稍微写几个最常用的。
    这些key的名字,只能作为GetKey()方法的参数,GetButton()方法的参数是在Project Settings里面定义的Button的名字。

    重点来讨论一下多点触摸的输入。unity为我们提供了一个结构体 "Touch"来处理多点触摸输入。
    Input.touches,它是Touch类型的数组,最多5个元素吧,android设备的话性能差异比较2到5都有可能)
    这个变量结构体数组变量就是用户的输入拉~我们来分解一下这个Touch是个结构体变量。它有这些成员:

    到目前为止,我只用到position和phase两个参数。认识一下phase这个参数,类型是TouchPhase(一个枚举类型,有以下5种情况)

   那么,虚拟按键是怎么实现的呢?先定义一个GUITexture button : GUITexture;
button.HitTest(Input.GetTouch(i).position);//如果按到了就返回true
    当然可以用phase当状态机。其实呢,向上面一句那么写是咋靠谱的,使用GetTouch()方法,必须要有Touch存在啊,要不然就下标越界了,得先判断。
    我用了一个很笨的办法,每个按键对应一个flag来判断是否down……

作者: 我不再年轻    时间: 2013-10-29 10:45
拜读了, 多点这种文章
作者: KennyK    时间: 2014-2-18 16:48
useful detail~~thanks
作者: tangqizuse    时间: 2014-2-20 23:22
新人学习,谢谢分享




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5