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
このケースを検出するために独自の仮想ヒットボックスを使用できるように、仮想ヒットボックスをプレーヤーの周りに拡張できますか (プレーヤーと一緒に移動します) 。このアプローチはより良いですか?プレイヤー スプライト自体が地面から浮き上がったり、影響を受けたりしてはなりません。
ここでの目標は、具体的には、プレーヤーがジャンプできるようになる直前にジャンプできるようにすることです。そのため、実行可能である可能性がある短い時間上キーを押すことを覚えておくことは、この特定のケースで私が求めている解決策ではありません.