unity-19输入及虚拟轴_第1页
unity-19输入及虚拟轴_第2页
unity-19输入及虚拟轴_第3页
unity-19输入及虚拟轴_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

unity--19输⼊及虚拟轴unity的输⼊可分为两⼤类:传统输⼊早期游戏开发时候,都选⽤这种模式,通过分别对⿏标或者键盘的按钮判断来执⾏:①Input.GetMouseButton系列:判断⿏标,参数0是左键,参数1是右键②Input.GetKey系列:判断键盘,参数可⽤keycode枚举虚拟输⼊轴为了解决不同控制设备之间的差异(键盘左右,或者摇杆左右操作逻辑相同),再加上玩家有⾃定义按键的需求,因此unity建议不使⽤第⼀种传统输⼊法(代码写死了),⽽是提供了虚拟按键,即虚拟输⼊轴。这样脚本代码访问虚拟输⼊轴,⽽虚拟轴和真实的控制设备绑定,间接访问来达到统⼀兼容的⽬的。虚拟输⼊还有⼀个好处:现代游戏的输⼊和早期游戏不太⼀样,早期游戏中,上,下,左,右等都是离散的状态,可以直接⽤0,1,2等表⽰;⽽现代游戏输⼊往往具有中间状态,⽐如轻触按钮是“⾛”,连续按住不放是“加速跑”,它需要形如0.1,0.3,0.5,1等多级梯度。使⽤unity的虚拟输⼊,哪怕是键盘也能模拟多级梯度,当我们按住“A”键时,这个键绑定的虚拟轴的值会逐渐从0增加到1。①boolInput.GetButton(“虚拟轴名”):该系列可读取虚拟轴,⽽不⽤关⼼真实绑定的键来源于⿏标,或者键盘,或者其他控制设备。它仅判断有没有键被按下或者抬起,⽆法判断⽅向是左,还是右。②floatInput.GetAxis(“虚拟轴名”):即能判断有没有键被按下或者抬起,⼜能判断⽅向,返回值是⼀个-1到1之间的浮点数,值为0表⽰没有键被按下。[-1,0)表⽰有键被按下,⽅向左,(0,1]表⽰有键被按下,⽅向右。Input.GetAxisRaw(“虚拟轴名”):返回值是-1,0,1的离散值。Gravity:输⼊复位的速度,仅⽤于类型为键/⿏标的按键。·*Dead:任何⼩于该值的输⼊值(不论正负值)都会被视为0,⽤于摇杆。·Sensitivity:灵敏度,对于键盘输⼊,该值越⼤则响应时间越快,该值越⼩则越平滑。对于⿏标输⼊,设置该值会对⿏标的实际移动距离按⽐例缩放。·Snap:如果启⽤该设置,当轴收到反向的输⼊信号时,轴的数值会⽴即置为0,否则会缓慢的应⽤反向信号值。仅⽤于键/⿏标输⼊。·Invert:启⽤该参数可以让正向按钮发送负值,反向按钮发送正值。练习让按键控制预制体(带刚体组件),轻按则在某个位置⽣成,长按则实现“弹射”效果。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassNewBehaviourScript:MonoBehaviour{publicRigidbodyrd;publicfloatspeed=10f;publicfloatAxis;voidFire(){RigidbodyrdClone=(Rigidbody)Instantiate(rd,transform.position,Quaternion.identity);rdClone.velocity=transform.forward*speed*Axis;Destroy(rdClone.gameObject,2);}voidUpdate(){if(Input.GetButtonUp("Horizontal")){Fire();}Axis=Input.GetAxis("Horizontal");}}练习2:让摄像机能随着⿏标的左右移动⽽⽔平移动解:脚本绑在摄像机上,摄像机的⽔平移动既是移动x轴的值usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassaaa:MonoBehaviour{publicfloataxis;//UpdateiscalledonceperframevoidUpdate(){axis=Input.GetAxis("MouseX");if(axis!=0){transform.Translate(transform.right*Time.deltaTime*axis);}}}再让⿏标上下移动能控制摄像机的上下旋转:优化代码:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassaaa:MonoBehaviour{publicfloatx;publicfloaty;//UpdateiscalledonceperframevoidUpdate(){x=Input.GetAxis("MouseX");y=Input.GetAxis("MouseY");//两种写法均可,⼀种参数是vector,另⼀种是浮点数。transform.Translate(x,0,0);//transform

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论