求助,在教程的基础上制作了第一个游戏但是运行的时候会卡住?
gamemaker吧
全部回复
仅看楼主
level 4
Myc💫
楼主
如题,跟着官方教程制作了这个游戏后自己添加了一个空气墙,但是运行游戏时发现经常object撞上空气墙后会卡住(很长时间动不了或者过一会儿才能动一下这样),也有不卡的时候但比较少
想问一下是不是因为电脑带不动?或者是别的什么原因
2019年07月18日 11点07分
1
level 4
Myc💫
楼主
p1是object的程序,p2左边那条白线就是添加的空气墙object
2019年07月18日 11点07分
2
level 4
Myc💫
楼主
可能也有用的是试用版的原因?因为这个卡不卡卡到什么程度很随机所以觉得应该不是程序的问题
2019年07月18日 11点07分
3
level 15
sunyubokkkkk
学着使用debug功能。使用调试模式启动游戏,在你发现卡住之后,看看调试器是否显示游戏帧率正常,正常说明不是游戏“卡死了”,而是你的代码另球“卡在墙里”;如果发现的确游戏停止刷新了,考虑代码里写了单帧半死循环之类的大量耗时操作。
根据你已有的描述,首先不应该是电脑配置问题,如果你的电脑连这都带不动,那它必然根本无法启动GMS2。
另外游戏表现出了问题,首先不要怀疑是软件的原因,软件问题是最后怀疑对象。试用版只是禁用了一些函数,以及限制资源数量。
你可以试试看移动你的空气墙的位置,观察不同情况下球“卡住”的表现,可以推测出为什么move_contact_solid函数的效果与你所预期的不完全相同。
2019年07月20日 00点07分
4
Myc💫
谢谢!不过请问单帧半死循环是指哪类……?
2019年07月20日 07点07分
sunyubokkkkk
@Myc💫
原谅我自造词了😂就是指一帧代码内出现死循环(如无限循环无限递归等),但在很特殊的情况下又可以退出循环的。你这种描述比较符合
2019年07月20日 07点07分
Myc💫
哦哦好的谢谢,如果出现这个循环的话是需要修改代码吗?
2019年07月20日 09点07分
sunyubokkkkk
@Myc💫
如果有,当然要改。但一般你按照教程来的话,初期是不会遇到这种情况的
2019年07月20日 14点07分
level 7
十字星寒
目测是程序问题,→_→,大概应该可能也许是碰撞检测的问题吧。
2019年07月20日 02点07分
5
level 9
◆依稀♤
建议使用!place_free(x,y+vspeed)来检验前方是否有障碍物。如果有,先让move_contact执行一步,然后speed=0;
另外,如果是转身的时候很容易卡住。建议看碰撞盒的判定是否是圆形。
2019年07月20日 05点07分
6
Myc💫
谢谢
2019年07月20日 07点07分
吧务
level 13
q糖豆p
(下次尽量使用截图,而不是拍照屏幕)
GM引擎里,碰撞判定会随着image_angle旋转,说简单点就是面对墙的时候转身尾巴就会卡进墙里。而LZ使用的move_contact会贴墙贴的非常紧,这样即使是圆形碰撞区域在旋转时可能出现的边缘1像素抖动也会造成卡墙情况的出现。毕竟用于判定的圆也是像素圆而不是真正意义上的圆形。
咱这边建议的方案是抛弃image_angle并使用自定义的draw(也就是draw_sprite_ext)来避免碰撞判定旋转。
2019年07月22日 01点07分
7
Myc💫
谢谢
2019年07月23日 15点07分
吧务
level 13
q糖豆p
另外看LZ的代码是“卡在墙里动不了”的意思,但LZ的问题描述怎么读都是“程序卡死响应缓慢”。
已经开始制作游戏,从玩的一方跨越到制作一方了,别在“卡”这个字上出矛盾啊。
2019年07月22日 01点07分
8
Myc💫
啊……对对这么说的确更准确……但事实上是这两个情况都会出现
2019年07月23日 15点07分
level 1
待到_花落时
你的步长大于空气墙的宽度吧?
2021年07月20日 19点07分
9
1