gpt4 book ai didi

javascript - 如何在 Phaser 中启用跳跃 "just before"玩家接触地面?

转载 作者:行者123 更新时间:2023-11-30 12:37:29 25 4
gpt4 key购买 nike

使用 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 引起的,我的问题是;

  1. 是否可以确定玩家离他们正下方的地面(可以是平台)的距离(“多高”)?然后 canJump 只是距离的函数,仅适用于非常小的值。

  2. 是否可以在玩家周围扩展一个虚拟碰撞盒(它会与玩家一起旅行),这样它自己的 touching.down 就可以用来检测这种情况?这种方法更好吗?玩家 Sprite 本身不应悬浮在地面上或以其他方式受到影响。

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

最佳答案

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

  2. 是的,它可以,但是您的 Sprite 会“漂浮”在空中。所以请参见第 1 点 :)

关于javascript - 如何在 Phaser 中启用跳跃 "just before"玩家接触地面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com