查看: 1308|回复: 0
打印 上一主题 下一主题

[实业产业] 控制输入系统 - Input 类实例讲解

[复制链接]

2508

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32806
精华
12

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-14 10:26:00 |只看该作者 |倒序浏览
做游戏少不了控制,但是一个成熟的游戏引擎,是不能简单仅仅获取键盘中或者遥感确定的按键来控制,要考虑到用户更改游戏按键的情况,当然也得考虑到不同设备的不通输入方式,比如U3D是可以运行在iphone上的,iphone可没有键盘和上下左右键,他有平衡控制(简单化解为水平和垂直两个方向度数),如果用户使用飞行或者汽车方向盘手柄,那就不能简单用一个按键来描述了,需要有一个度数的问题(也可以简单分解为水平和垂直两个方向度数)。 U3D提供了一个Input类封装控制输入,不做详细解释,在后面我会举一些常用的例子来说明。 Class Variables mousePositionThe current mouse position in pixel coordinates. (Read Only) anyKeyIs any key or mouse button currently held down? (Read Only) anyKeyDownReturns ***e the first frame the user hits any key or mouse button (Read Only). inputStringReturns the keyboard input entered this frame (Read Only). Class Functions GetAxisReturns the value of the virtual axis identified by axisName. GetAxisRawReturns the value of the virtual axis identified by axisName with no smoothing filtering applied. GetButtonReturns ***e while the virtual button identified by buttonName is held down. GetButtonDownReturns ***e during the frame the user pressed down the virtual button identified by buttonName. GetButtonUpReturns ***e the first frame the user releases the virtual button identified by buttonName. GetKeyReturns ***e while the user holds down the key identified by name. Think auto fire. GetKeyDownReturns ***e during the frame the user starts pressing down the key identified by name. GetKeyUpReturns ***e during the frame the user releases the key identified by name. GetMouseButtonReturns whether the the given mouse button is held down. GetMouseButtonDownReturns ***e during the frame the user pressed the given mouse button. GetMouseButtonUpReturns ***e during the frame the user releases the given mouse button. ResetInputAxesResets all input. After ResetInputAxes all axes return to 0 and all buttons return to 0 for one frame. --------------------------------------------------------------------------------------------------------------------------------- 获取键盘某一(这里是空格键)按键状态(bool):Input.GetKeyDown(KeyCode.Space) 这是最不通用的写法,不推荐 获取虚拟按键(这里是Jump)按键状态(bool):Input.GetButton("Jump") 推荐用这种写法,用户可以设置按键Jump为空格键(默认就是空格) 获取遥感(或iphone感应)垂直轴力度(是一个0-1之间的float):Input.GetAxis("Vertical“) 推荐写法,键盘的话默认按w或者up会瞬间提到1,要是遥感的话可以控制一个度,再乘以力的方向向量的话,就可以控制汽车之类的加速了。如果你直接写成键盘的w或者d,那就没办法控制力度了。 获取遥感(或iphone感应)水平轴力度(同上):Input.GetAxis("Horizontal") 获取鼠标中键状态:Input.GetAxis("Mouse ScrollWheel") 注:有些遥感可能水平方向会转超过1或者小于0的值出来(例如汽车遥感),为了避免错误的计算(乘以负数的话向量的方向可是会相反的),可以配合数学函数Mathf.Clamp01()来固定他的值在0和1之间。例如: motor = Mathf.Clamp01(Input.GetAxis("Vertical")); //设置汽车引擎力度为垂直方向力度
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 12:39 , Processed in 0.088473 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部