使用Phaser(以及随后的教程),使用提供的Arcade物理模块,跳跃非常容易。然而,对于我来说这很烦人的事实是,玩家只有在他们出现的时候才会跳起来#34;由于使用了播放器正在触及的逻辑,因此接地。
我使用的代码基于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
可用于检测此案例吗?这种方法更好吗?玩家精灵本身不应该离开地面或以其他方式受到影响。
这里的目标是让玩家在应该能够之前跳转 - 所以记住一个短暂的按键,这可能是可行的,是在这个特殊情况下我找不到解决方案。
答案 0 :(得分:3)
不是"本地"。没有CCD或前瞻,身体只关心它的行进方向。您尝试实现的目标通常称为使用传感器。 P2支持传感器,但Arcade Physics不支持,所以你必须模拟它 - 通过创建第二个体(你在第2点中提到)或使用标记。这可能是一个简单的Point对象,它被丢弃了#39;当他们跳起来然后你可以使用点和身体之间的内置距离检查来允许你的近距离跳跃'要求。
是的,可以,但是你的精灵会漂浮在'在空中。所以请参阅第1点:)