Unity核心概念⑧:Input
输入相关内容一定是写在update函数中的
一、获取鼠标在屏幕的位置
屏幕坐标的原点是在屏幕的左下角,往右是x轴正方向,往上是y轴正方向。
返回值是Vector3,但是只有x和y有值,z一直为0.因为屏幕是2D的,不存在z轴。
print(Input.mousePosition);
二、检测鼠标的输入
参数中0代表鼠标左键,1代表鼠标右键,2代表鼠标中键。
1.鼠标按键按一下
// 检测鼠标左键是否在当前帧被按下
Input.GetMouseButtonDown(0);
2.鼠标按键按之后抬起
// 检测鼠标左键是否在当前帧抬起
Input.GetMouseButtonUp(0);
3.鼠标按键长按、按下、抬起
当鼠标按键按住不放时会一直进入
// 检测鼠标左键是否在当前帧长按、按下、抬起
Input.GetMouseButton(0);
4.鼠标中键滚动
返回值是Vector的值,鼠标中键滚动会改变其中的y值。
返回值:y=-1鼠标中键往下滚动,y=0鼠标中键没有滚动,y=1鼠标中键往上滚动。
Input.mouseScrollDelta;
三、检测键盘输入
1.键盘按键按下
// 检测键盘上的 W 键是否在当前帧被按下
Input.GetKeyDown(KeyCode.W);
以下写法只能使用小写的字符串:
Input.GetKeyDown("w");
2.键盘按键抬起
// 检测键盘上的 W 键是否在当前帧抬起
Input.GetKeyUp(KeyCode.W);
3.键盘按键长按
// 检测键盘上的 W 键是否在当前帧长按
Input.GetKey(KeyCode.W);
四、检测默认轴输入
鼠标键盘按键输入主要是用来控制玩家的旋转、位移等等,Unity提供了更方便的方法帮助我们控制对象的位移和旋转。在edit—project setting—input manager中可以设置关联。
1.键盘按下A、D键时,返回-1到1之间的变换
控制对象左右移动或旋转。
// 获取水平输入轴的连续值(通常对应AD键或左右箭头键)
Input.GetAxis("Horizontal");
2.键盘按下W、S键时,返回-1到1之间的变换
控制对象上下移动或旋转。
// 获取垂直输入轴的连续值(通常对应WS键或上下箭头键)
Input.GetAxis("Vertical");
3.鼠标横向移动时,返回-1到1之间的变换
// 获取鼠标在垂直方向(X轴)上的移动量
Input.GetAxis("Mouse X");
4.鼠标竖向移动时,返回-1到1之间的变换
// 获取鼠标在垂直方向(Y轴)上的移动量
Input.GetAxis("Mouse Y");
注意:GetAxis方法是渐变的,它会在-1-0-1之间渐变,所以会出现小数。GetAxisRaw和GetAxis使用方式相同,但是返回值只会是-1、0、1。
五、其它
1.是否有任意键或鼠标长按
Input.anyKey;
2.是否有任意键或鼠标按下
Input.anyKeyDown;
3.得到这一帧的键盘输入
Input.inputString;
六、手柄输入相关
1.得到连接手柄的所有按钮名字
// 获取当前连接到电脑的所有游戏手柄/操纵杆的名称数组
string[] str = Input.GetJoystickNames();
2.手柄某一个键按下
Input.GetButtonDown("Unity输入管理器中定义的按钮名称");
3.手柄某一个键抬起
Input.GetButtonUp("Unity输入管理器中定义的按钮名称");
4.手柄某一个键长按
Input.GetButton("Unity输入管理器中定义的按钮名称");
七、移动设备触摸相关
1.获取当前帧屏幕上触摸点的数量
Input.touchCount;
2.是否启动多点触控
// 启用设备的多人触摸功能(多点触控)
Input.multiTouchEnabled = true;
3.启用设备的陀螺仪传感器功能
Input.gyro.enabled = true;
4.陀螺仪重力加速度向量
Input.gyro.gravity;
5.陀螺仪旋转速率(角速度)
Input.gyro.rotationRate;
6.陀螺仪当前的四元数(这是个角度信息,用来控制场景上的一个3D物体受到重力影响)
Input.gyro.attitude;