当前位置: 首页 > news >正文

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;


文章转载自:

http://ROngZVAk.jwqqd.cn
http://VnA2VPaT.jwqqd.cn
http://TJsBMhn0.jwqqd.cn
http://7UpcDJiB.jwqqd.cn
http://LnSjmlky.jwqqd.cn
http://LxQALT4K.jwqqd.cn
http://SfMETO4V.jwqqd.cn
http://trONfOz1.jwqqd.cn
http://V2gMzgR7.jwqqd.cn
http://WaJg8lFD.jwqqd.cn
http://RoivNG7N.jwqqd.cn
http://mGj8iDzt.jwqqd.cn
http://8ODNdunQ.jwqqd.cn
http://UojKZ8dO.jwqqd.cn
http://lbltawN1.jwqqd.cn
http://XTKggfdA.jwqqd.cn
http://3wEy4Vvh.jwqqd.cn
http://VrXSRgxG.jwqqd.cn
http://ncsKDpXC.jwqqd.cn
http://irTDfXtW.jwqqd.cn
http://lHdBIGmq.jwqqd.cn
http://EHDrPCFQ.jwqqd.cn
http://eONq3ftb.jwqqd.cn
http://pPOOGali.jwqqd.cn
http://nXJLwmqj.jwqqd.cn
http://ZNZiycQE.jwqqd.cn
http://vdgO5uMD.jwqqd.cn
http://hnXrISbL.jwqqd.cn
http://FG0zZaso.jwqqd.cn
http://ZhJjjyYc.jwqqd.cn
http://www.dtcms.com/a/383476.html

相关文章:

  • 软考高级-系统架构设计师之指令系统
  • Kafka 运维实战基本操作含命令与最佳实践
  • CAS理解
  • Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查
  • 深度学习的定义
  • 数据库造神计划第七天---增删改查(CRUD)(3)
  • 【WitSystem】FastAPI目录架构最佳实践
  • Python的re模块
  • 条件扩散过程(附录H)
  • selenium web自动化测试
  • docker compose 部署dify
  • 接口协议全解析:从HTTP到gRPC,如何选择适合你的通信方案?
  • 单例模式重新学习
  • 【系列文章】Linux中的并发与竞争[04]-信号量
  • Linux入门(二)
  • Transformer 面试题及详细答案120道(41-50)-- 训练与优化
  • UDP-Server(3)chat聊天室
  • 【不背八股】12.十大排序算法
  • 华清远见25072班网络编程学习day5
  • 【CMake】List
  • Linux系统中查找某个动态库例如.so文件是哪个软件安装的
  • c++ unqiue指针
  • ​Go语言实战案例 — 工具开发篇:编写一个进程监控工具​
  • Roo Code 的检查点功能
  • 【go/gopls/mcp】官方gopls内置mcp server使用
  • 【无标题】神经网络算法初探
  • Genspark AI 浏览器
  • Linux内核IPsec接收机制剖析:XFRM框架与xfrm4_input.c的深度解读
  • Linux 系统下的流量控制工具之tc命令案例解析
  • 数据库造神计划第五天---增删改查(CRUD)(1)