设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

关于按键判断方面的问题请教

查看数: 2751 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-14 02:03

正文摘要:

简而言之,就是想把好几个功能绑在一个按键上,结果失败了 嗯,这里用黑魂来举个例子,我只玩过三代,在三代中翻滚、跑步、跳跃都在一个键上,按一下是翻滚,一直按着跑步,而在跑动中按下则是跳跃,换言之,就是以 ...

回复

灯笼菜刀王 发表于 2019-3-17 22:39:36
本帖最后由 灯笼菜刀王 于 2019-3-17 22:48 编辑

确实, 一大堆条件分歧, 不明白思路的话看起来是很混乱

思路是这样的, 先用个变量@a记录按键时间, 为了节省变量, 我们让它按下的时候 以正数来记录, 松开的时候,以负数来记录, 0的时候不动

开始, 第一句是初始化变量@a, 让它不至于是nil, 否则下面的判断会出错

先考虑翻滚, 像前面设计的, 以按下后10帧内松开为条件,  所以 翻滚要在"松开"的分歧里判断, 因为@a是正数的时候就是按过按键了, 所以当@a 大于0 且 小于10的时候, 条件就成立, 该干嘛干嘛, 然后让@a归零

然后考虑跳跃, 这里需要一个"反复按下"的判断, 所以要用个开关来记录"之前有没有按过按键",  之前有没有按过按键, 和翻滚是一样的按键判断, 为了区分它们, 用@a 是否超过10(轻按和长按)来区分

所以, 当@a 大于10的时候, 就是按过一次按键且不是翻滚, 这个时候就可以打开 "按过一次的开关", 然后再次按的时候, 就达成跳跃的条件了, 所以在按下的分歧里, 当"按过一次的开关"打开的时候, 就可以判断为跳跃了, 跳完后关闭开关, 为了避免也许会出现的问题(比如反复跳, 延迟跳, 跑着跑着脑抽跳一下之类的) 我们再加上个@a < 10 的判断, 以保证这个判断只有在第二次按下后10帧内起作用

好了, 这样就OK了, 但是, 善后工作没做, 如果按一下后, 我不继续按, 悠哉的走几步先, 然后再按, 这个时候因为开关是打开的, 所以还是一样可以触发跳跃判断,  这就不合适了, 所以这里还要处理下, 开关打开后, 没有马上接着按的情况, 10帧内没接着按, 就关掉开关, 把@a归零, 该干嘛干嘛

--------------------------------------------
写后面的话,  你要用RM变量来做判断也是可以啦, 不过用事件的条件分歧, 复数条件要套一大串, 不管是操作还是阅读都十分麻烦,  所以这里建议用 条件分歧最后一页的 脚本

这样写  $game_variables[1] > 0 and $game_variables[1] < 10   就是复数条件了, 这样节省一层分歧整理起来也舒服些

点评

非常感谢!  发表于 2019-3-20 15:41

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

灯笼菜刀王 发表于 2019-3-16 00:33:54
本帖最后由 灯笼菜刀王 于 2019-3-16 12:06 编辑

饭粒就是这样咯



使用@a 作为记录时间, 使用@按住后松开 作为是否重复按下的判定
灯笼菜刀王 发表于 2019-3-14 22:02:38
本帖最后由 灯笼菜刀王 于 2019-3-14 22:10 编辑

其实, 你这三个按键方式, 区分点是, "判断按键的间隔时间"

按F1, 搜索下  Input , 可以看到RMXP所支持的按键模式, 然后考虑下, 怎么利用它们, 配合"按键间隔时间" 来进行动作分歧吧

比如说,按住跑步, 这个很容易, 用press就可以了, 但是按住之前,因为也触发了"按一下 - 翻滚"的判定, 所以会先滚再跑... 如果把翻滚的条件改为, 按下后10帧内松开, 那就不会先滚咯

同样的, 跳跃的条件就是, 按下超过10帧后松开(不能小于10帧, 否则就触发翻滚判定了), 同时间隔10帧内再次按下,  这样三个动作就区分开来了

具体要怎么做, 就你自己思考啦, 不要麻烦我XD

点评

虽然我试着用开关来模拟按键松开的,可是搞不懂逻辑顺序,不仅做不出来,连问题出在哪里都弄不明白……还是麻烦下教教我吧QAQ  发表于 2019-3-15 21:39
可是老师,RMXP没有【松开】的判断啦,要不然的话问题早就解决了,Input我是知道的……  发表于 2019-3-15 21:35
89444640 发表于 2019-3-14 07:22:52
我印象里rm是无法识别按下和弹起,比如你按着A再按B应该是有效的,
但是按住a再按a就不清楚了,比如连续按两次方向键,后一下是长按切换对应方向跑动,松开停止的act操作,因为无法识别弹起所以无效。
开关如果都处理不了,还真不知道,等高手帮忙。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-2-22 19:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表