关于unity的鼠标双击和移动触摸屏的双击
2014-07-04 11:41
246 查看
鼠标的双击相对比较简单,百度一下可以搜到很多,如下:
上面是双击屏幕的事件,假如想双击某个物体呢,就要这样:
下面是移动设备上触屏的双击:
同样,移动端点击某一确定物体的双击事件,把下面脚本赋给要点击的物体,
对于t1和t2可以定义为System.DateTime类型,这样t2 = System.DateTime.Now;相减后用TimeSpan.如下:
最后是,关于GUI的双击,原理都类似:
function OnGUI(){ if(Event.current.isMouse && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2){ print("double click"); } }
上面是双击屏幕的事件,假如想双击某个物体呢,就要这样:
private var b = false; function OnGUI(){ if(Event.current.isMouse && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2){ if(b){ print("double click " + transform.name); } } } function OnMouseEnter(){ b = true; } function OnMouseExit(){ b =false; }意思就是,当鼠标进入你想点击的物体后,双击才有效果,否则鼠标未进入物体,或者exit时,b = false,双击无效果。
下面是移动设备上触屏的双击:
private var t1:double; private var t2:double; function Update(){ if(Input.GetMouseButtonDown(0)){ t2 = Time.realtimeSinceStartup; if(t2 - t1 < 0.2){ print("double click"); } t1 = t2; } }我在一篇博客看到过移动端GetMouseButtonDown是有效果的,所以这样利用t1,t2,记录两次单击的时间间隔,假如小于0.2s,则被判断为双击。
同样,移动端点击某一确定物体的双击事件,把下面脚本赋给要点击的物体,
private var t1:double; private var t2:double; public var cam:Camera; function Update(){ if(Input.GetMouseButtonDown(0)){ var ray:Ray = cam.ScreenPointToRay(Input.mousePosition); var hit:RaycastHit; if(Physics.Raycast(ray,hit)){ if(hit.transform.name == gameObject.transform.name){ t2 = Time.realtimeSinceStartup; if(t2 - t1 < 0.2){ print("double click " + transform.name); } t1 = t2; } } } }
对于t1和t2可以定义为System.DateTime类型,这样t2 = System.DateTime.Now;相减后用TimeSpan.如下:
private var t1:System.DateTime; private var t2:System.DateTime; public var cam:Camera; function Update(){ if(Input.GetMouseButtonDown(0)){ var ray:Ray = cam.ScreenPointToRay(Input.mousePosition); var hit:RaycastHit; if(Physics.Raycast(ray,hit)){ if(hit.transform.name == gameObject.transform.name){ t2 = System.DateTime.Now; if(t2 - t1 < System.TimeSpan(0,0,0,0,200)){ print("double click " + transform.name); } t1 = t2; } } } }
最后是,关于GUI的双击,原理都类似:
private var b = false; private var t = 0.0; function OnGUI(){ if(GUI.Button(Rect(10,10,80,50),"click me")){ t = Time.time; if(b){ print("it's doublic click"); b = false; }else{ b = true; } } } function FixedUpdate(){ if(t + 0.2 < Time.time){ b = false; } }
相关文章推荐
- 关于unity的鼠标双击和移动触摸屏的双击
- unity的鼠标双击和移动触摸屏的双击
- 关于unity的轴的移动和openGL的鼠标拾取
- Unity 物体在屏幕内跟随鼠标移动
- 捏合视图变化(视图的缩放), 单击随着鼠标移动, 双击放大视图,再双击还原视图
- 关于jsp中tr鼠标移动变色,有底色如何变色
- 关于为cwnd增加鼠标双击的响应需要注意的
- 关于uCGUI的鼠标移动时留下印子的问题
- 关于禁止USB移动设备,而不禁止USB打印机(扫描仪、鼠标等)
- Unity中鼠标左键按下,拖拽物体移动
- Unity 鼠标与触摸屏通用代码
- 用Kinect来控制鼠标的移动、单击、双击和右击 及PPT控制(Windows sdk)
- unityd 模型跟随鼠标移动,鼠标隐藏
- DataGrid行随鼠标移动变色及单击双击行事件处理
- 关于使用div img canvas map,area打造鼠标移动上去变色的方法
- Unity 鼠标控制角色移动
- 用Kinect来控制鼠标的移动、单击、双击和右击 (Windows sdk)
- C#关于鼠标移动到 标题栏的响应操作
- 关于Flex4,鼠标移动到组时的提示
- 关于鼠标移动监听接口:MouseMotionListener