Phaser 3 中的运动角度问题

Movement angle issue in phaser 3

检查 this 实验示例。 它实际上只移动 4 个角度 (45,135,-45,-135)。如何解决这个问题?

---更新---

是的,它开始向所有角度移动,但随后它开始拖到我说的那 4 个角度之一。如果你激活调试模式并且只移动一个角度除了我说的那些你会注意到它。

enter image description here

啊哈!我知道了。这真的是 Phaser 的奇怪部分。

当 Phaser 设置最大速度为 600 时,
它没有设置最大矢量速度 600。

但是,它会将 velocity.x 和 velocity.y 最大值设置为 600

意思是,因为船加速超过最大值,

它将达到 velocity.x = 600 和 velocicty.y = 600,
导致它在 45、-45 等范围内移动

我记得这个是phaser 2的,我用我自己的最大函数解决了。
这是我的(某种)伪代码。

function maximumVelocity(sprite, maxV){
  var v = Math.sqrt( Math.pow(sprite.body.velocity.x,2) + Math.pow(sprite.body.velocity.y,2) )
  if(v > maxV){
    sprite.body.velocity.x = maxV * Math.cos(sprite.angle*Math.PI/180)
    sprite.body.velocity.y = maxV * Math.sin(sprite.angle*Math.PI/180)
  }
}

编辑: 我不小心添加了两次 x 的平方。我应该加上 x^2 和 y^2。 而且,我刚刚写了一个完整的工作代码,而不是伪代码。