gamemaker吧 关注:13,654贴子:95,257
  • 21回复贴,共1

求助,在教程的基础上制作了第一个游戏但是运行的时候会卡住?

只看楼主收藏回复

如题,跟着官方教程制作了这个游戏后自己添加了一个空气墙,但是运行游戏时发现经常object撞上空气墙后会卡住(很长时间动不了或者过一会儿才能动一下这样),也有不卡的时候但比较少
想问一下是不是因为电脑带不动?或者是别的什么原因


IP属地:英国来自iPhone客户端1楼2019-07-18 19:06回复
    p1是object的程序,p2左边那条白线就是添加的空气墙object


    IP属地:英国来自iPhone客户端2楼2019-07-18 19:08
    回复
      可能也有用的是试用版的原因?因为这个卡不卡卡到什么程度很随机所以觉得应该不是程序的问题


      IP属地:英国来自iPhone客户端3楼2019-07-18 19:09
      回复
        学着使用debug功能。使用调试模式启动游戏,在你发现卡住之后,看看调试器是否显示游戏帧率正常,正常说明不是游戏“卡死了”,而是你的代码另球“卡在墙里”;如果发现的确游戏停止刷新了,考虑代码里写了单帧半死循环之类的大量耗时操作。
        根据你已有的描述,首先不应该是电脑配置问题,如果你的电脑连这都带不动,那它必然根本无法启动GMS2。
        另外游戏表现出了问题,首先不要怀疑是软件的原因,软件问题是最后怀疑对象。试用版只是禁用了一些函数,以及限制资源数量。
        你可以试试看移动你的空气墙的位置,观察不同情况下球“卡住”的表现,可以推测出为什么move_contact_solid函数的效果与你所预期的不完全相同。


        IP属地:上海来自Android客户端4楼2019-07-20 08:52
        收起回复
          目测是程序问题,→_→,大概应该可能也许是碰撞检测的问题吧。


          IP属地:湖南来自Android客户端5楼2019-07-20 10:06
          回复
            建议使用!place_free(x,y+vspeed)来检验前方是否有障碍物。如果有,先让move_contact执行一步,然后speed=0;
            另外,如果是转身的时候很容易卡住。建议看碰撞盒的判定是否是圆形。


            IP属地:浙江来自Android客户端6楼2019-07-20 13:59
            收起回复
              (下次尽量使用截图,而不是拍照屏幕)
              GM引擎里,碰撞判定会随着image_angle旋转,说简单点就是面对墙的时候转身尾巴就会卡进墙里。而LZ使用的move_contact会贴墙贴的非常紧,这样即使是圆形碰撞区域在旋转时可能出现的边缘1像素抖动也会造成卡墙情况的出现。毕竟用于判定的圆也是像素圆而不是真正意义上的圆形。
              咱这边建议的方案是抛弃image_angle并使用自定义的draw(也就是draw_sprite_ext)来避免碰撞判定旋转。


              IP属地:北京7楼2019-07-22 09:00
              收起回复
                另外看LZ的代码是“卡在墙里动不了”的意思,但LZ的问题描述怎么读都是“程序卡死响应缓慢”。
                已经开始制作游戏,从玩的一方跨越到制作一方了,别在“卡”这个字上出矛盾啊。


                IP属地:北京8楼2019-07-22 09:05
                收起回复
                  你的步长大于空气墙的宽度吧?


                  9楼2021-07-21 03:59
                  回复