我遇到了一个很奇怪的bug,我不太明白为什么会发生这种情况。问题出在我的代码里,碰到角落的时候,玩家对象会卡在碰撞体内,尽管不是永久性的。例如,如果我向右移动,跳跃在碰撞体的精确角落,我就卡住了,无法向上、下或右移动。但是,如果我向左移动,我就不卡了。但有时,如果我按下相反方向的键,玩家会向相反方向移动。尝试解决这个问题的方法包括:

  • 使用move_snap(1,1)(解决了一些特定情况,但不是所有情况)
  • 在碰撞体中使用正值和负值(解决了一些问题,但仍然会出现)
  • 将碰撞代码移到Begin Step的开始部分(似乎没有解决问题)
  • 将碰撞代码移到Begin Step的末尾(似乎解决了水平方向的问题)
  • 检查所有精灵的碰撞框是否相同(它们是相同的,我已经分离了碰撞和精灵,以便于动画代码)

我想知道是不是因为我将碰撞体伸展到地图上,还是因为我的帧率太高(60帧)。我也注意到,在IDE中,这个问题出现的频率比在打包后发布游戏时要少很多。在IDE中,我从未遇到过玩家卡在块中,然而在发布游戏后,玩家会经常卡在块中,甚至会导致游戏软锁。

我的代码很糟糕,我知道,别看那些垃圾代码。代码如下:https://preview.redd.it/u4tbd39cf5eh1.png?width=650&format=png&auto=webp&s=e1ba08297005cd9a70511b93d941ad05e727c2a7