美文网首页
五、输入控制

五、输入控制

作者: GameObjectLgy | 来源:发表于2021-01-21 08:04 被阅读0次
    (1)键盘输入:

    对于键盘按键操作,只有三种操作:
    键被按下: Input.GetKeyDown();
    键被松开: Input.GetKeyUp() ;
    键被按下一直没松开: Input.GetKey();

    (2)鼠标输入:

    Input.GetMouseButtonDown(); 按下触发
    Input.GetMouseButtonUp(); 松开触发
    Input.GetMouseButton(); 按下不松开一直触发
    括号中输入 0对应左键,1对应右键,2对应中键

    (3)虚拟轴输入

    public static float GetAxis (string axisName);
    返回由 axisName 标识的虚拟轴的值。对于键盘和游戏杆输入设备,该值将处于 -1...1 的范围内。水平范围和垂直范围从 0 变为 +1 或 -1,以 0.05f 的步幅增加/减少。
    public static float GetAxisRaw (string axisName);
    对于键盘和游戏杆输入,该值将处于 -1...1 的范围内。 由于未对输入进行平滑处理,键盘输入将始终为 -1、0 或 1。 如果您想自己完成键盘输入的所有平滑处理,这非常有用。
    其中需要说明的是,在创建unity工程时,都有以下默认的输入轴:
    1、 水平线 (Horizontal) 和垂直线 (Vertical) 映射至 w、a、s、d 和方向键。
    2、Fire1、Fire2、Fire3 分别映射至 Control、Option (Alt) 和 Command 键。
    3、 Mouse X 和 Mouse Y 映射至鼠标移动增量。

    (4)Unity 手机触屏事件

    当将Unity游戏运行到IOS或Android设备上时,桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作,但如多点触屏等操作却是无法利用鼠标操作进行的。Unity的Input类中不仅包含桌面系统的各种输入功能,也包含了针对移动设备触屏操作的各种功能。其中触碰信息都存储在Input.touches结构数组。
    参数说明:
    fingerId:触摸的唯一索引
    position:触摸屏幕的位置
    deltatime:从最后状态到目前状态所经过的时间
    tapCount:点击数。Andorid设备不对点击计数,这个方法总是返回1
    deltaPosition:自最后一帧所改变的屏幕位置
    phase:相位,也即屏幕操作状态。相位状态有:
    Began——手指刚刚触摸屏幕。
    Moved——手指在屏幕上移动。
    Stationary——手指触摸屏幕,但自最后一阵没有移动。
    Ended——手指离开屏幕。
    Canceled——系统取消触控跟踪,原因如把设备放在脸上或同时超过5个触摸点。
    参考:https://blog.csdn.net/u014550279/article/details/50537713

    (5)触摸实际应用

    (1)在unity中touch事件同时也会触发GetMouseButton事件,需要注意,因此GetMouseButton可以直接在PC和手机通用。
    Input.GetAxis("Mouse X")取得的值,在手机中实际用Input.GetTouch(0).deltaPosition来表示,但是也可以用Input.GetAxis("Mouse X")来判断指尖移动的距离,但是要注意使用if(Input.touchCount>0&&Input.GetTouch(0).phase == TouchPhased.Moved)来做为判断是否按下的条件,这样不管用Input.GetAxis("Mouse X")或者Input.GetTouch(0).deltaPosition都没有问题。

    相关文章

      网友评论

          本文标题:五、输入控制

          本文链接:https://www.haomeiwen.com/subject/wgqrzktx.html