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

Project1

 找回密码
 注册会员
搜索
查看: 3936|回复: 9
打印 上一主题 下一主题

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

[复制链接]

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
跳转到指定楼层
1
发表于 2017-11-21 07:36:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
好比,同时按“左”跟“下”,“左”稍微先,而“下”稍后一点,不松开,你就会看到主角先左行一步然后一直往下走。
也就是先按下的只执行一次,后按下的会一直执行直到松开为止。
根据这个逻辑,我想设置一个事件跟主角完全同步,即是按上下左右完全跟着走,单独按一个键是可以轻易判断按键然后同步的,唯独是同时按下两个方向时无法同步,需要怎样才能判断最后按下是哪个键?

Lv4.逐梦者

梦石
0
星屑
5039
在线时间
1780 小时
注册时间
2012-7-3
帖子
1799

开拓者

9
发表于 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开心呀
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
8
发表于 2017-11-21 16:24:09 | 只看该作者
这个效果其实是不是跟队伍跟随一样?

点评

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36462
在线时间
10800 小时
注册时间
2009-3-15
帖子
4815
6
发表于 2017-11-21 13:42:38 | 只看该作者
用真八方向移动不就好了..
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12319
在线时间
21822 小时
注册时间
2010-10-24
帖子
308
5
发表于 2017-11-21 13:17:44 | 只看该作者
我也赞同判断角色的行动而不是判断玩家的按键的思路,可以试试在并行处理里判断玩家坐标然后设置那个事件的移动路线看看
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
27138
在线时间
1535 小时
注册时间
2006-1-10
帖子
2063

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

4
发表于 2017-11-21 10:28:05 | 只看该作者
并行处理

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

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

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19488
在线时间
3112 小时
注册时间
2013-1-11
帖子
1292
3
发表于 2017-11-21 09:07:15 | 只看该作者
这个不需要在按键上判断吧,不是应该在移动上判断吗。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2699
在线时间
1060 小时
注册时间
2015-11-1
帖子
271
2
发表于 2017-11-21 07:48:59 | 只看该作者
看他代码怎么写而已。

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

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 16:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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