新人求问gms2怎么才能做到keyboard_check移动
gamemaker吧
全部回复
仅看楼主
level 5
深渊监视者😱
楼主
新人求问gms2怎么才能做到keyboard_check移动,但是每次之移动32像素,按照方格移动,类似于魔塔那种非连续移动,就是按住方向键不放,每次移动一个方块
2025年10月16日 15点10分
1
level 6
魔導紳士
试试JUMP TO POINT那个按钮?
2025年10月17日 00点10分
2
深渊监视者😱
嗯嗯,就是这个,谢谢大佬
2025年10月17日 01点10分
深渊监视者😱
大佬,感觉效果还是没出来move_to_point,但是只要keybord_check还是连续的走,只能press,但是press必须按一下在松开再按一下,很累,我想实现按住方向键不松,每次移动32像素,也就是一个格子
2025年10月17日 02点10分
魔導紳士
有一个按住某键盘键的事件的把,不是那个点一下键盘键的事件。
2025年10月17日 03点10分
吧务
level 13
q糖豆p
感觉题主的想法就挺奇怪的,有点故意给自己找难受那种感觉。
回到问题本身,如果需求是每次按下只会进行1格移动(无论按下多长时间),那么可以增加一个变量来进行控制,这个变量可以是“当前剩余的可移动格数”或者是“当前是否已经进行了移动”,甚至是“当前是否为按下的瞬间”。就是在keyboard_check判定成功后,根据该变量的值进行移动并更改变量的值,然后在keyboard_check的else部分里重置这个变量。
可选方案是用keyboard_check_pressed函数(检测当前是否为按下瞬间)替代keyboard_check(检测当前是否按着)。在咱构建过的框架里,只有一种replay机制里无法使用,因为那个框架里是在begin step里先keyboard_check所有可能按键(或从存档里载入记录的操作),所以只好弃用带_pressed和_released后缀的两个函数以避免RTP和replay结果不同。如果题主没有做类似功能的打算,和未来的扩展方向也不冲突的话,可以考虑一下。
2025年10月17日 01点10分
3
魔導紳士
可能他想要的就是老战棋游戏那种走格子的形式。可以再在每步事件加个CD变量控制速度。
2025年10月17日 02点10分
吧务
level 13
q糖豆p
嗯……看上去,题主说出来是这样的效果:
0、方格移动,移动距离是32的整数倍,没有中间量(即没有移动的动画过程);
1、既不要按下按键就蹭蹭蹭一下走到头,也不要按下后只动1格这种必须抬起再按才能走的蹩脚方式;
2、符合第一点的都可以,但具体细节说不上来。//但这里其实很关键
那么,有一种可行方案是类似FC俄罗斯方块(或者说类似windows按住字母打字)的效果
0、按下按键的瞬间移动1格;
1、等待10帧后如果按键仍然按住,则再次移动1格;//自动重复延迟
2、此后每6帧检测一次,如果还按着就再移动1格;//自动重复速率
如果这个思路和题主想要的效果一致,那就是加入一个“已延迟时间”的变量,平时是0,keyboard_check检测成功后自动增加1,当值是1或11的时候执行移动,当大于11的时候自动减少6,keyboard_check检测抬起(即else部分)再重置到0。
2025年10月17日 07点10分
4
深渊监视者😱
给力!
2025年10月17日 10点10分
level 6
魔導紳士
做的出来啊,试过了就是战棋游戏那种格子移动。按住右方向可以很明显看到跳跃式移动。
2025年10月18日 15点10分
5
深渊监视者😱
啊,这个我用的不习惯,我都是敲源代码的
2025年10月18日 16点10分
魔導紳士
@深渊监视者😱
代码也应该不难吧,逻辑反正是一样的。
2025年10月18日 17点10分
q糖豆p
原来jump to point就是直接更改x、y啊。(日常劝说)快转GML Code吧。
2025年10月20日 01点10分
魔導紳士
@q糖豆p
是的,平常角色敌人移动用的是设定速度(三个三角)那个。
2025年10月20日 12点10分
1