查看this实验示例。 它实际上仅以4个角度(45,135,-45,-135)移动。该如何解决?
---更新---
是的,它开始向各个角度移动,但随后开始拖动到我说的这四个角度之一。如果您启用了调试模式,并且只是以一个角度移动,除了我说过的那个,您会注意到它。
答案 0 :(得分:1)
啊哈!我知道了。这真的是Phaser的不可思议的部分。
当相位器将最大速度设置为600时,
它没有设置矢量最大速度600。
但是,相反,它会将 velocity.x和velocity.y最大值设置为600
意思是,因为船的加速度超过了最大值,
它将达到速度x = 600和速度y = 600,
使其移动到45,-45等位置。
我记得相位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。 而且,我只是编写了完整的工作代码,而不是伪代码。