unity 虚拟按键按键无法识别

“只有某个按键被按下” 或者“某个按键没被按下”该怎么写代码【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:82,072贴子:
“只有某个按键被按下” 或者“某个按键没被按下”该怎么写代码收藏
这是我的c#代码,用于控制游戏角色 向前走动 和 向前跑动。想按下W时向前走,按下w和shift向前跑,但这代码中
第二个W和第一个W相互冲突,我按下
W 时 会同时满足 两个 if条件。if (Input.GetKey(KeyCode.W)) {animation.CrossFade(&Walk&);this.transform.Translate(Vector3.forward*1f*Time.deltaTime);}else if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.LeftShift)){animation.CrossFade(&Run&);this.transform.Translate(Vector3.forward*3f*Time.deltaTime);}else{animation.CrossFade(&Idle&);}我想 应该可以判断某个按键没被按下吧?我想将第一个if改为“如果按下
shift没被按下”或者“只有W被按下”。请告诉我如何“判断某个按键为空” 或者 “只有某个按键被按下”
具体代码是怎么写的,我是个新手请写出来说明白点。如果这想法不行,请告诉我别的方法 并最好写出具体的代码 我是个新手。
SiKi学院上有大量的项目案例课程,可以让学员随时随地学习!通过案例来从入门到深入的学习Unity!
将判断shift按下的判断放入到第一个判断w的里面,如果shift按下则跑,否则走。
Input.GetButtonDown()只有在按下的那一帧return true,其余时间return false;Input.GetButton()是在按下的一瞬间和按住的时候return true,其余时间return false;Input.GetButtonUp()是在松开按键的那一帧return true,其余时间return false。这些同样适用于Input.GetKeyDown(),Input.GetKey()和Input.GetKeyUp()
同为初学者。泥鳅的代码我也不知道。不过你的问题很好解决。你是if (Input.GetKey(KeyCode.W))
和 else if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.LeftShift))冲突。原因是W,你把Input.GetKey(KeyCode.W)放在了前面,这样无论你按不按shift,W都是按下的,所以不会进入第二个跑步的判断。只要将代码改为if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.LeftShift))else if (Input.GetKey(KeyCode.W)) 就行了。这时候先判断的就是shift+W。fales后,在判断是否W。这样就解决了。
一般这种用bool做,你想到后面还要判断是否在地面,是否进入攻击状态,你要一个个if吗。。。。一般做个布尔为大前提就方便了
登录百度帐号推荐应用unity中按键按着不送力一直作用在物体上,而是按下一次作用一次_百度知道
unity中按键按着不送力一直作用在物体上,而是按下一次作用一次
Unity中我设置按下w,物体向上移动一次,Input.GetKey(KeyCode.w);Rigidbody.AddForce。。。。。
但是我一直按下w,他这个作用力一直都在。这不是我想要的,我希望,我按下一次他就作用一次,若不松开按键,这个力也只作用一次而不是一直都在。有点类似于虐...
我有更好的答案
/&#47.GetKey(KeyCode.w))  {  addforce()..;/施加力  }  else  {  addforce(0,0,0)..&#47  if(Input
采纳率:62%
input.getkeyDown(KeyCode.w); 就可以实现只按一次 不抬起的时候 运行一次
本回答被提问者采纳
1条折叠回答
为您推荐:
其他类似问题
unity的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 2399|回复: 8
WebBrowseObject,关于Unity3D插件接收不到键盘事件
本帖最后由 shuukyoueibolt 于
12:03 编辑
用WebBrowseObject 打开一个Unity3D插件开发的网页游戏,
鼠标事件可以响应,并且鼠标正常交互,焦点正常,
但是键盘毫无响应,输入法默认en
考虑Flash插件有特殊支持,Unity3D插件是不是也要特殊处理下?
另外如果可以使用非IE内核的内嵌浏览器,会不会有不同的体验?
引擎的WebBrowseObject有对键盘事件进行处理,确保网页可以收到,所以你要先定位看看是你们网页原因还是什么,打开一个其他网页比如搜素之类的,看看能不能输入
本帖最后由 shuukyoueibolt 于
12:23 编辑
青青三叶草 发表于
引擎的WebBrowseObject有对键盘事件进行处理,确保网页可以收到,所以你要先定位看看是你们网页原因还是什 ...
其他网页,还有Flash插件开发的网页游戏都是正常的,一切正常,另外这个插件,好像也不能正确卸载,再关闭浏览器,销毁WebBrowseObject对象后,内存占用没有完全恢复,比较高
插件可能估计错了,是这个游戏 ,下载的插件是wj3d.exe,应该不是u3d
青青三叶草 发表于
引擎的WebBrowseObject有对键盘事件进行处理,确保网页可以收到,所以你要先定位看看是你们网页原因还是什 ...
从插件的属性里,看到是 Fancy3D,是国内自主研发的3D插件,请问在处理键盘事件这里,插件上是不是要有什么特别注意的?
内存问题是ie控件本身造成的,即使释放也不会完全恢复,除非采用独立进程,这个没有办法
你们用控件打开哪个页面无法输入?你发的是网页哪里可以接收输入?这个要详细说明最好有demo
青青三叶草 发表于
内存问题是ie控件本身造成的,即使释放也不会完全恢复,除非采用独立进程,这个没有办法
你们用控件打开哪 ...
具体就是一个FrameHostWnd wnd1,里面简单的放一个按钮,点击按钮后,再弹出一个FrameHostWnd wnd2,wnd1作为wnd2的owner,wnd2里面只有一个内嵌浏览器WebBrowseObject,内嵌浏览器初始化的时候,打开的是这个地址 ,会提示安装一个插件,就是Fancy3D插件,然后点击开始游戏,需要先注册一个百度账号,然后进入游戏后,任何键盘事件都不能响应了
青青三叶草 发表于
内存问题是ie控件本身造成的,即使释放也不会完全恢复,除非采用独立进程,这个没有办法
你们用控件打开哪 ...
这个该怎么处理呢?问题还是比较急的,先谢了
改进了IE控件的键盘消息处理策略,用附件里面的临时版本的XLUE.dll替换了再试
本帖子中包含更多资源
才可以下载或查看,没有帐号?
经过测试,可以正常响应键盘事件,下个版本应该就可以修复了吧
Powered by初试Unity 3D——认识脚本、组件、鼠标键盘输入
1、脚本,也就是控制游戏物体运动的代码。Scripts,5.0之后仅支持C#和Script,当然C#是主流
2、,各个组件组成物体,不同的物体由不同的组件构成。但是所有的游戏物体都有Transform组件。也是不可隐藏的。
3、鼠标键盘的输入类似:
//键盘输入(参数A~Z,F1~F12)
Input.GetKey(KeyCode.A);
//持续返回true
Input.GetKeyDown(KeyCode.A);
//按下A键返回true
Input.GetKeyUp(KeyCode.A);
//抬起A键返回true
//鼠标输入(0:鼠标左键,1:鼠标右键,2:鼠标中键,只有这是三个参数)
Input.GetMouseButton(0);
//持续返回true
Input.GetMouseButtonDown(0);
//按下鼠标左键返回true
Input.GetMouseButtonUo(0);
//抬起鼠标左键返回true鏌ョ湅: 782|鍥炲?: 3
鏂版墜姹傚姪锛屽叧浜庢寜閿?啿绐侀棶棰樸

我要回帖

更多关于 unity input 按键 的文章

 

随机推荐