簡體   English   中英

Phaser 我的 Phaser.Physics.Arcade.Sprite 上缺少某些方法

[英]Phaser some methods are missing on my Phaser.Physics.Arcade.Sprite

我正在嘗試使用 Phaser 3 游戲引擎構建游戲。 我正在使用 TypeScript 並為我的每個實體編寫類。

我從背景中的一些雲開始。 我開始移除街機重力並為風添加速度X。 我的班級看起來像這樣

class Cloud extends Phaser.Physics.Arcade.Sprite {
    constructor(scene, x, y) {
        super(scene, x, y, 'cloud');
        this.setGravityY(0);
        return this;
    }

    static preload(scene) {
        scene.load.image('cloud', cloudAsset);
    }
}

但我收到一個類型錯誤

未捕獲的類型錯誤:無法讀取 null 的屬性“重力”

這對我來說毫無意義,因為setGravityY方法是一個擴展方法,您可以在下面的屏幕截圖中看到它。

在此處輸入圖片說明

那么為什么body是未定義的呢? 我認為擴展 Phaser.Physics.Arcade.Sprite 應該有一個身體。 就像在這里的文檔中一樣

在此處輸入圖片說明

你是對的,Arcade Sprite 應該有一個身體。 但是場景的物理特性還不知道這個游戲對象。 所以你必須像這樣將它添加到場景物理中:

class Cloud extends Phaser.Physics.Arcade.Sprite {
    constructor(scene, x, y) {
        super(scene, x, y, 'cloud');
        scene.physics.add.existing(this); //here you add this existing sprite object to scene's physics 
        this.setGravityY(0);
        return this;
    }
}

暫無
暫無

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

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