隨着Phaser(以及allong的教程)跳躍超級容易與提供的Arcade物理模塊。然而,由於使用了玩家正在觸摸的邏輯,玩家只能在他們「在地面上」時跳躍,這對我來說令人討厭。如何啓用跳躍「就在」玩家接觸Phaser的地面?
我使用的代碼是基於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
來檢測這種情況?這種方法更好嗎?玩家精靈本身不應該懸浮在地面或以其他方式受到影響。
這裏的目標是明確允許玩家跳躍他們應該能夠爲之前 - 所以記住向上按鍵的時間很短的時間,這可能是可行的,是不是我在這個特殊情況下尋求的解決方案。
您必須創建一個計時器wantsToJump,並將其設置爲特定時間或步數,當用戶試圖在空中跳躍時,然後在更新期間對其進行計數。只要wantsToJump大於0,當檢測到接觸地面時,玩家應該立即跳躍。 – LearnCocos2D 2014-09-03 08:17:04
@ LearnCocos2D這是當前的行爲,如果保持向上按鈕被按下(並且這種方法確實會在一個小的誤差範圍內複製它),但我的目標是實際上允許玩家「作弊/遊戲」該系統由幾個像素。在我目前的遊戲中,玩家反彈一點點(並且下降得慢)比在鏈接的例子中。 – user2864740 2014-09-03 08:46:56
我不會沿着這條路走下去,如果你這樣做,意味着經常跳躍可以達到100像素的高度,但如果你做連續跳躍,第二次跳躍可能達到105像素的高度,可能允許玩家去到她不應該去的地方。另外它可能不會看起來/感覺更好。玩家會期望玩家在接觸地面時再次跳躍,而不是在稍高於地面時跳躍。也許你在註冊地面觸摸和重新跳躍之間有一個1幀的延遲,在重新跳躍之前會造成一個小的延遲? – LearnCocos2D 2014-09-03 09:09:39