Unity技术手册 - GetKey和GetAxis和GetButton

2,634 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

这是小空坚持写的Unity新手向系列,欢迎品尝。

小空为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂。

新手(√√√)

大佬(√)

👉实践过程

😜GetKey

GetKey  当按下和抬起键盘上对应参数的键时返回true,会瞬间触发N多次,长按会一直触发,平时不使用,但是类似按住类似开火的功能时可能用到。

GetKeyDown 当按下参数对应名字的键盘的那一帧返回true,按下瞬间仅触发一次,常用。

GetKeyUp  当抬起参数对应名字的键盘的那一帧返回true,抬起瞬间仅触发一次,常用。

上面三个方法参数均为KeyCode或者按键字符(小写),包含很多,文章最下方有按键说明。

void Update()
{
    if (Input.GetKey(KeyCode.W))
    {
        print("按下键盘w");
    }
    if (Input.GetKey("f5"))
    {
        print("按下键盘f5");
    }
    if (Input.GetKeyDown(KeyCode.S))
    {
        print("按下键盘s");
    }
    if (Input.GetKeyDown("d"))
    {
        print("按下键盘d");
    }
    if (Input.GetKeyUp(KeyCode.Q))
    {
        print("按下键盘q");
    }
    if (Input.GetKeyUp("tab"))
    {
        print("按下键盘tab");
    }
}

😜GetAxis

返回由 axisName 标识的虚拟轴的值。返回的是float类型,在-1到1之间。

举例:默认该值为0,按住【D】或【→】会从0增长到1,最后保持1,松开后从1回归到0。其他同理。

该值与帧率无关,无序担心帧率变化。

主要是控制上下左右,常用于控制角色移动,默认是【WASD】键和小键盘左侧的【上下左右】箭头键。

print("键盘:垂直值-1到1:"+Input.GetAxis("Vertical"));

print("键盘:水平值-1到1:"+Input.GetAxis("Horizontal"));

print("触摸:鼠标沿着屏幕X移动时触发-1到1:"+Input.GetAxis("Mouse X"));

print("触摸:鼠标沿着屏幕Y移动时触发-1到1:"+Input.GetAxis("Mouse Y"));

print("触摸:当鼠标滚动轮滚动时触发-1到1:"+Input.GetAxis("Mouse ScrollWheel"));

默认可以传入Edit-Input Manager-中的几个输入控制。

image.png 去重后还剩下11个参数可传递:

image.png

可在Edit-Project Setting-Input中设置或修改,一般默认即可,毕竟大家都养成了一定的键盘按键习惯。   如果上面的GetAxis平滑处理不能满足你,想要自己处理平滑度,可以是用Input.GetAxisRaw函数,该函数默认不按键为0或返回为0,按键范围为-1和1。

😜GetButton

GetButtonDown表示鼠标按下才会执行一次

GetButton表示按下过程执行多次和按住鼠标不放就一直执行,可用于武器开火功能

GetButtonUp表示按下鼠标放开后才会执行一次

传递的都是string类型字符串,默认可以传入Edit-Input Manager-中的几个输入控制。和GetAxis参数一样。

image.png

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。