unity中鼠标和触摸问题
来源:互联网 发布:逆波兰式计算c语言 编辑:程序博客网 时间:2024/06/10 09:32
关键点1:在unity中touch事件同时也会触发GetMouseButton事件,有时候可能会给你带来方便,但是如果没有意识到这个问题的话,也很可能给你带来很大的麻烦。
关键点2:触摸操作也可以使用Input.GetAxis("Mouse X")(或"Mouse Y",下同,略去不写)来判断指尖移动的距离,虽然这点很方便,但是这样就带来了另外两个问题,见关键点3和4;
关键点3:Input.GetAxis("Mouse X")取得的值与Input.GetTouch(0).deltaPosition的取值有一些细微但是很重要的差别:
使用Input.GetAxis("Mouse X"),没有任何问题;
使用deltaPosition同样没有任何问题,因为这就是为触摸操作而设计的。
关键点4:实践中发现在直观感觉差不多的滑动过程(分别用鼠标拖动和手指拖动)中,Input.GetTouch(0).deltaPosition.x 的值总是比Input.GetAxis("Mouse X")取得的值要大很多,分析可能是手机屏幕dpi比较大的原因,因此在实践中为了获取直观感受差不多的旋转速度,要分别调试旋转加成系数。
总结一下:不要使用一条代码判断两种情况,最好分开,做一个单选(可以使用Enum),要么鼠标操作,要么触摸操作,分别使用最合适的判断和函数,并分别调试旋转加成系数
事件回顾:
在写一个惯性拖动旋转的脚本的时候,为在pc和Android平台上都能使用(即用鼠标和触摸都能控制),我使用了如下的判断语句:
if(Input.GetMouseButton(0) || (Input.touchCount>0 && Input.GetTouch(0).phase == TouchPhase.Moved)
来判断鼠标按下或者手指按下,并用Input.GetAxis(“Mouse X”)来获取拖动的值,期望能够一次判断两种情况,分别适应不同平台的操作。在pc上使用鼠标操作没有任何问题,但是在android上触摸操作时出现了问题。经过多次测试并查阅资料,发现原来触摸操作也可以触发Input.GetMouseButton(0)的事件,这就引发了前述关键点3>2)>a 中的问题。
惯性旋转物体脚本:
using UnityEngine;
using System.Collections;
//操作方式
public enum ControlType{
mouseControl,
touchControl,
}
public class RotateTarget: MonoBehaviour
{
public ControlType controlType;
//旋转速度加成系数
else if(controlType==ControlType.touchControl)
//在安卓设备上也可以用Mouse X,根据实验,touch[0].deltaPosition.x的值总是比Mouse X的值大很多,所以此处使用Mouse X
currentSpeed = Mathf.Lerp(currentSpeed, Input.GetAxis("Mouse X")/Time.deltaTime,0.5f*Time.deltaTime);
}
- unity中鼠标和触摸问题
- 【Unity开发】Unity中触摸和鼠标操作的几个问题
- Unity中触摸和鼠标操作的几个问题
- Unity中触摸和鼠标操作的几个问题(转)
- Unity 键盘,鼠标,触摸输入
- Unity检测鼠标碰撞或手指触摸
- unity 触摸滑动 问题整理
- unity中手机触摸代码
- unity基础开发----常用代码鼠标滑动,触摸事件
- unity EasyTouch插件中触摸事件失效
- unity中自定义鼠标样式
- Unity中模拟鼠标事件
- Unity中实现鼠标拖动旋转物体和鼠标点击旋转物体
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 在Unity中通过触摸屏幕实现模型的旋转和缩放
- 在unity中实现方向盘UI的随着触摸转动和手指离开复位功能
- 在unity中实现方向盘UI的随着触摸转动和手指离开复位功能
- The MySQL server is running with the --read-only option so it cannot execute this statement
- leetcode——Intersection of Two Arrays II
- 某服务请求经负载均衡设备分配到集群A、B、C、D进行处理响应的概率分别是10%、20%、30%和40%。已知测试集群所得的稳定性指标分别是90%、95%、99%和99.9%。现在该服务器请求处理失败,
- js实现全选和反选功能
- 小心!新媒体环境下,营销传播还有几个大坑!
- unity中鼠标和触摸问题
- 什么是野指针?如何避免野指针?
- HDU 5562 Clarke and five-pointed star (BC)
- July 15th 模拟赛C T4 回家(莫名其妙【推荐】) Solution
- [Database] 大数据量高并发的数据库优化详解
- python challenge 7学习过程
- C++11 lambda表达式 实际上是lua的闭包方式
- iOS中关于自定义模型的存储
- MATLAB学习记录