查看: 4489|回复: 9

[已经过期] 同时按下两个按键不松开,怎么判断最后按下的是哪一个?

[复制链接]
梦石
8
星屑
3963
在线时间
397 小时
注册时间
2017-10-11
回帖
114
发表于 2017-11-21 07:36:31 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
好比,同时按“左”跟“下”,“左”稍微先,而“下”稍后一点,不松开,你就会看到主角先左行一步然后一直往下走。
也就是先按下的只执行一次,后按下的会一直执行直到松开为止。
根据这个逻辑,我想设置一个事件跟主角完全同步,即是按上下左右完全跟着走,单独按一个键是可以轻易判断按键然后同步的,唯独是同时按下两个方向时无法同步,需要怎样才能判断最后按下是哪个键?
梦石
0
星屑
2870
在线时间
1074 小时
注册时间
2015-11-1
回帖
261
发表于 2017-11-21 07:48:59 | 显示全部楼层
看他代码怎么写而已。

--
反过来想,只要你获取的不是按键状态,而是玩家的行动状态就可以了。

回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-11-21 09:07:15 | 显示全部楼层
这个不需要在按键上判断吧,不是应该在移动上判断吗。。
回复

使用道具 举报

梦石
0
星屑
29220
在线时间
1535 小时
注册时间
2006-1-10
回帖
1898

开拓者第一届地图绘制大赛RTP组第四名

发表于 2017-11-21 10:28:05 | 显示全部楼层
并行处理

当左键 按下时
角色
移动路线 左移
事件
移动路线 左移

当右键 按下时
角色
移动路线 右移
事件
移动路线 右移

…………
MV帮助 http://miaowm5.github.io/RMMV-F1/日复一日,年复一年人还是保留一点自我兴趣的好啊~~~忘记过去 ,这样我就可以  放弃未来了……哭~~终于找回以前的头像了,哎~~原来我是那么的想念阿……
画地图没灵感?很烦?很无聊 【 戳 我 】一 大 波 地 图 在 等 你  \^0^/
我的游戏
回复

使用道具 举报

梦石
0
星屑
14555
在线时间
22062 小时
注册时间
2010-10-24
回帖
302
发表于 2017-11-21 13:17:44 | 显示全部楼层
我也赞同判断角色的行动而不是判断玩家的按键的思路,可以试试在并行处理里判断玩家坐标然后设置那个事件的移动路线看看
噫
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-11-21 13:42:38 | 显示全部楼层
用真八方向移动不就好了..
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2017-11-21 16:18:11 | 显示全部楼层
按键获取并不对,主角撞墙的情况下继续按对应方向键依然是判定你按了,但是行动上他的位置并没有改变
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-11-21 16:24:09 | 显示全部楼层
这个效果其实是不是跟队伍跟随一样?

点评

正解,队伍跟随也是记录主角具体的每步移动然后更新Train_Actors的移动。  发表于 2017-12-5 13:08
回复

使用道具 举报

梦石
0
星屑
5037
在线时间
1780 小时
注册时间
2012-7-3
回帖
1749

开拓者

发表于 2017-11-21 23:03:02 | 显示全部楼层
本帖最后由 defisym 于 2017-11-21 23:09 编辑

不是特别明白……大概理解了一下
我的理解是,两个键只是在玩家看来是“几乎同时”按下,而需要用程序来判定究竟是那一个先按下,而不是按照同时按键的键值优先值执行
那么首先有一点需要判明的是,这个“几乎同时”的时间间隔必须要大于事件循环的最小时间间隔,也就是1帧
这样一来只要解决逻辑的问题了,可以用“中断”这个概念来类比构思
也就是说,玩家的每一次按键都会产生一次中断,按照这个思路:
0.通常状态,允许按键中断A
1.玩家按下任意按键,进入中断A,同时允许中断B——中断B只能在中断A开启的时候才能开启
2.中断B中玩家按下任意按键,获取当前的按键并执行相应操作,同时排除一起按下上下与左右这种直观上不会移动的情况
3.判断玩家是否松开按键,如果是处于中断A,则关中断A,如果是处于中断B,则再次判定当前是否按键(例如按下←和↓,↓稍后,但是玩家先松开了↓继续按住←的情况),如果松开了一个按键,则关中断B,如果松开了所有按键,关中断B和A
4.循环
对应到当前软件的事件系统,打开中断A时允许中断B则可以对应成B仅仅在打开某个开关或变量处于某个特定值时执行
随随便便的写了一些,具体实现起来的逻辑要更加的复杂,比如说要判定玩家按下三个按键依次松开等等,当然你也可以无视问题中的“判断最后一次按键”,直接将相反方向的按键去掉只选择第三个方向,等等
以上,希望能帮助到你


(事实上你只要将NPC设定成“跟随玩家”就行了,不同的是需要判断与玩家的距离,例如距离间隔小于2格的时候停止运动改为静止等等,移动速度也相应根据玩家是否按下了加速与距离等等动态调整,将寻路这些麻烦的恶心的复杂的事情交给系统去做就行了(逃)
Project Ktr进行中:
   
------------------
→SRPG开发之六-天气与地形互动
→→围观
→→→去Lofter围观
------------------
离经叛道的扯淡者/伪独立游戏爱好者/Decade Studio(?)/造轮子真TM开心呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部