Javascript “如何启用跳跃”;就在“之前”;玩家在移相器中触地?
有了Phaser(以及接下来的allong教程),使用提供的Arcade物理模块,跳跃非常容易。然而,它有一个恼人的事实,一个球员只能跳时,他们是“在”地上,由于使用球员是触地逻辑 我使用的代码是基于和遵循的Javascript “如何启用跳跃”;就在“之前”;玩家在移相器中触地?,javascript,game-engine,game-physics,bounding-box,phaser-framework,Javascript,Game Engine,Game Physics,Bounding Box,Phaser Framework,有了Phaser(以及接下来的allong教程),使用提供的Arcade物理模块,跳跃非常容易。然而,它有一个恼人的事实,一个球员只能跳时,他们是“在”地上,由于使用球员是触地逻辑 我使用的代码是基于和遵循的 var canJump = this.player.body.touching.down; if (canJump && this.upInputIsActive()) { this.player.body.velocity.y = this.JUMP_SPEED
var canJump = this.player.body.touching.down;
if (canJump && this.upInputIsActive()) {
this.player.body.velocity.y = this.JUMP_SPEED;
}
我想让玩家能够在离地面很近但还没有接触到地面的情况下跳跃,以便在着陆时重新跳跃/跳跃更加流畅。因此,如果观察到限制是由球员的触地
造成的,我的问题是:
canJump
只是距离的函数,对于非常小的值才是真的触碰。向下
可以用来检测这种情况?这种方法更好吗?玩家精灵本身不应漂浮在地面上或受到其他影响您必须创建一个计时器wantsToJump,并将其设置为用户在空气中尝试跳转时的特定时间或步数,然后在更新期间倒计时。只要wantsToJump大于0,当检测到触地时,玩家应该立即跳转。@LearnCos2D如果一直按向上按钮,这是当前的行为(这种方法确实可以在一个小的误差范围内复制一次按),但我的目标是实际允许玩家“作弊/玩游戏”该系统由几个像素组成。在我当前的游戏中,玩家的弹跳比链接的例子稍微慢一点(并且下降得更慢)。如果你这样做,我不会走这条路,这意味着一次常规跳跃可以达到100像素的高度,但是如果你连续跳跃,第二次跳跃可能达到105像素的高度,可能允许玩家去不应该去的地方。另外,它看起来/感觉可能不会更好。玩家会期望玩家在触地时再次跳跃,而不是在略高于地面时。也许你在记录触地和再次跳跃之间有一个1帧的延迟,这会在重新跳跃之前造成一个小的延迟?@learncos2D如果玩家能够到达那里,那么他们应该能够到达那里:D在这一点上,我仍然在寻找这两个问题的好的解决方案(能够做到这些应该只是简单的任务)不一定要完成一场精彩的比赛。我通过手动移动播放器下方的另一个小精灵并检查与世界对象的重叠,成功创建了一个hackish#2,但这感觉像是一个乱七八糟的东西。不过,感谢您对潜在问题的反馈,我会记住这一点。我最终通过创建一个小实体(使用主精灵手动移动,而不是物理移动)并使用重叠测试来“解决”此任务。