Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何启用跳跃”;就在“之前”;玩家在移相器中触地?_Javascript_Game Engine_Game Physics_Bounding Box_Phaser Framework - Fatal编程技术网

Javascript “如何启用跳跃”;就在“之前”;玩家在移相器中触地?

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

有了Phaser(以及接下来的allong教程),使用提供的Arcade物理模块,跳跃非常容易。然而,它有一个恼人的事实,一个球员只能跳时,他们是“在”地上,由于使用球员是触地逻辑

我使用的代码是基于和遵循的

var canJump = this.player.body.touching.down;

if (canJump && this.upInputIsActive()) {
    this.player.body.velocity.y = this.JUMP_SPEED;
}
我想让玩家能够在离地面很近但还没有接触到地面的情况下跳跃,以便在着陆时重新跳跃/跳跃更加流畅。因此,如果观察到限制是由球员的
触地
造成的,我的问题是:

  • 是否有可能确定玩家离地面(可以是平台)的距离(“多高”)?然后,
    canJump
    只是距离的函数,对于非常小的值才是真的

  • 是否可以在玩家周围扩展一个虚拟的点击框(该点击框将与玩家一起移动),以便它自己的
    触碰。向下
    可以用来检测这种情况?这种方法更好吗?玩家精灵本身不应漂浮在地面上或受到其他影响

  • 这里的目标是特别允许玩家在他们应该能够跳之前跳-因此,在短时间内记住向上键,这可能是可行的,在这种特殊情况下,我不是在寻求解决方案

  • 不是“天生的”。没有CCD或向前看,一个物体只关心它行进的方向。你想要达到的目标通常被称为使用传感器。P2支持传感器,但Arcade Physics不支持,因此您必须对其进行模拟——要么创建第二个实体(您在第2点中提到过),要么使用标记。这可能是一个简单的点对象,当它们跳跃时会“掉落”,然后您可以使用点和身体之间的内置距离检查,以满足您的“近跳跃”要求

  • 是的,它可以,但是你的雪碧会“漂浮”在空中。因此,请参见第1点:)


  • 您必须创建一个计时器wantsToJump,并将其设置为用户在空气中尝试跳转时的特定时间或步数,然后在更新期间倒计时。只要wantsToJump大于0,当检测到触地时,玩家应该立即跳转。@LearnCos2D如果一直按向上按钮,这是当前的行为(这种方法确实可以在一个小的误差范围内复制一次按),但我的目标是实际允许玩家“作弊/玩游戏”该系统由几个像素组成。在我当前的游戏中,玩家的弹跳比链接的例子稍微慢一点(并且下降得更慢)。如果你这样做,我不会走这条路,这意味着一次常规跳跃可以达到100像素的高度,但是如果你连续跳跃,第二次跳跃可能达到105像素的高度,可能允许玩家去不应该去的地方。另外,它看起来/感觉可能不会更好。玩家会期望玩家在触地时再次跳跃,而不是在略高于地面时。也许你在记录触地和再次跳跃之间有一个1帧的延迟,这会在重新跳跃之前造成一个小的延迟?@learncos2D如果玩家能够到达那里,那么他们应该能够到达那里:D在这一点上,我仍然在寻找这两个问题的好的解决方案(能够做到这些应该只是简单的任务)不一定要完成一场精彩的比赛。我通过手动移动播放器下方的另一个小精灵并检查与世界对象的重叠,成功创建了一个hackish#2,但这感觉像是一个乱七八糟的东西。不过,感谢您对潜在问题的反馈,我会记住这一点。我最终通过创建一个小实体(使用主精灵手动移动,而不是物理移动)并使用重叠测试来“解决”此任务。