请教大佬们一个困惑自己好久的问题
gamemaker吧
全部回复
仅看楼主
level 13
Venus🔥 楼主
我设计的是wasd移动,比如我按着某个方向键前进时,偶尔会发生突然失灵的情况,概率非常低。如果失灵了后我还再摁着那个键,那么会是一直失灵的状态,如果抬起来重新按一下就会恢复。这种情况发生在wasd切换比较勤的情况下,或者是切换场景的情况下,当然正常情况下也可能发生(具体没太找到规律,因为碰到这种情况的可能性非常低)。非常感谢有懂gm机制的大佬帮忙分析下可能是哪里的问题。不是自己懒得研究,是实在是没有思路,也检查代码了,就是非常普通的移动代码,个人感觉和代码关系不太大,因为代码每步循环的都是一样的,总觉得在某种特定情况下键盘没有输入到gm上。
2021年08月24日 17点08分 1
level 9
恰个代码
2021年08月25日 10点08分 2
level 9
盲猜需要注意下pressed和released之类的
2021年08月25日 10点08分 3
代码从4楼[乖]
2021年08月25日 10点08分
level 13
Venus🔥 楼主
U = keyboard_check(ord("W"));
D = keyboard_check(ord("S"));
L = keyboard_check(ord("A"));
R = keyboard_check(ord("D"));
2021年08月25日 10点08分 4
level 15
失灵指的是什么
2021年08月25日 13点08分 5
比如说按着w人物前走,如果你抬起来再按wasd某个键,那么会有很小概率失灵(人物不动了),也就是gm判定没输入,但如果这时抬起来再按一下就会恢复,如果不抬起来一直按着这个键,那么人物永远都不会动。
2021年08月25日 14点08分
这个问题因为是概率性出的,所以非常难判断哪里出问题了,大多数发生在wasd一通乱按或者切换场景后的情况。奇怪的是键盘会出这种问题,鼠标也是输入设备,从来没有碰到鼠标移动失灵的现象。
2021年08月25日 14点08分
level 6
代码太乱[汗]
你可以这样写
但是在往斜方向移动时速度依然是2(圆的半径)
2021年08月26日 03点08分 6
一开始我也是这么写的,后来发现如果还是和水平速度一样的话那就太快了,并且我这是斜75度视角的2.5d游戏,得把那种效果模拟出来
2021年08月26日 05点08分
是那种ARPG的类型吗
2021年08月26日 08点08分
@伍小耗子 是那种视角的,一开始是arpg来着,后来由于嫌arpg要去太杂又没有大把时间,改成了2.5d视角的射击游戏
2021年08月26日 08点08分
吧务
level 13
已经在集中帖里讨论过了,倾向于是硬件/操作系统一侧的问题。
顺手分享个咱在用的移动代码。在冲突按键视为什么都没按的情况下适用,要说有意思的地方就是用一个临时变量来模拟8方向+停下的9种状态。
6、9、12、15行检测的按键是预先存好的,可以是ord("W")也可以是vk_up。检测结束后temp的值和数字小键盘的1到9排布方式是一致的。
18-32行是确定方向和加减速,中间用到的scNewDir是软转向的代码,用直接硬指定角度也可以。
33、34是根据速度/角度改坐标,y方向上乘个比例数就可以模拟斜视角
35、36是防出屏幕设计。
2021年08月27日 05点08分 7
非常感谢糖大,这代码对我非常有用,这个帖子是当时发完集中贴看到没人回才发的。另外我还想了解一下,是不是改成鼠标/触控板手势移动就能避免我碰到的问题呢?
2021年08月27日 08点08分
@Venus🔥 通常我们只讨论程序部分,说到“我的机器上出现了奇怪的现象,但放到别的机器上不会发生”的情况已经是少数了,而且通常讨论不出什么理想结果。要预测一个看不到摸不着的机器上会有什么运行结果,还是饶了我吧。
2021年08月28日 00点08分
@q糖豆p 哈哈,我已经再调试调试吧,感谢糖大给提供思路
2021年08月28日 02点08分
1