使用 Phaser(并遵循教程),使用提供的 Arcade 物理模块,跳跃非常容易。然而,它有一个令我恼火的事实,即由于使用了玩家触地逻辑,玩家只能在他们“在”地面上时跳跃。
我使用的代码基于Game Mechanic Explorer、Platformer #4和以下;
var canJump = this.player.body.touching.down;
if (canJump && this.upInputIsActive()) {
this.player.body.velocity.y = this.JUMP_SPEED;
}
我想让玩家能够在他们真正靠近地面但尚未接触时跳跃,以便重新跳跃/着陆时跳跃更加流畅。因此,以及观察到限制是由touching.down
玩家造成的,我的问题是;
是否可以确定玩家与他们正下方的地面(可以是平台)的距离(“多高”)?然后
canJump
只是距离的函数,仅适用于非常小的值。可以在玩家周围扩展虚拟命中框(将与玩家一起旅行),以便
touching.down
可以使用它自己的来检测这种情况吗?这种方法更好吗?玩家精灵本身不应悬浮在地面上或受到其他影响。
这里的目标是让玩家在他们应该能够跳跃之前跳跃- 所以在短时间内记住向上按键,这可能是可行的,这不是我在这种特殊情况下寻求的解决方案.