簡體   English   中英

來自 object 特定一側的 Phaser 3 碰撞

[英]Phaser 3 Collision from a specific side of an object

我正在開發平台游戲,我想為它做的一件事是彈跳墊。 但要做到這一點,我需要一種方法,只有當玩家從頂部觸摸 object 時才會產生效果,而如果他們從側面或底部觸摸它則什么也不會發生。

下面的代碼針對的是一個object,一個凳子,我做了一個和我想要的差不多的效果:

if(this.checkCollision(this.p1, this.stool) && Phaser.Input.Keyboard.JustDown(this.keyW)) {
        this.p1.body.setVelocityY(-800);
        console.log(this.p1.velocityY);
    }

此代碼允許玩家在接觸凳子時跳得更高。 雖然這個解決方案在某些地方是可行的,但我真正想要的是只有當玩家站在凳子上而不是觸摸它的側面時才會出現這種效果。

如何修改這段代碼以獲得我想要的效果?

如果有幫助,我將在 VSCode 中使用街機物理學中的 Phaser 3。

簡單/快速的解決方案只是檢查玩家是否高於凳子,顯然要考慮兩個物體(玩家和凳子)的高度和來源。

因為我不知道你的代碼是什么樣子,所以我無法添加演示來展示這個

但它可能看起來像這樣:
(如果兩個對象的原點都在左上角)

if(this.checkCollision(this.p1, this.stool) &&
    (this.p1.y + this.p1.height) <= this.stool.y &&
     Phaser.Input.Keyboard.JustDown(this.keyW)) {
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM