以下是Dash能力的代码。持续时间在每一步事件中减少。

case "dash":
  //------------------OOOOOOOOOOOOOOO
  speed = dash_speed
  if (dash_duration <= 0) {
    speed = 0
    movement_lock = false
    state = "walk"
  }
  break;

我的普通移动是由move_and_colide处理的,所以我没有移动相关的问题。但是我的Dash能力只是速度,导致碰撞问题。我尝试了以下代码:

if (place_meeting(x, y, Owall)) {
  x = xprevious
  y = yprevious
}

但这并没有解决问题,Dash能力仍然会碰撞到墙壁。

我还尝试了以下代码:

x = xprevious
y = yprevious

将其放入与墙壁的碰撞事件中,但这只会在Dash能力停止一段距离之前停止,非常烦人。

我希望能够得到更好的碰撞系统的帮助。