Используйте .setCollideWorldBounds () для сгенерированных фигур в Phaser 3 - PullRequest
1 голос
/ 09 октября 2019

Я пытаюсь создать простой клон понга для изучения инфраструктуры Phaser 3.

Однако я не могу вызвать функцию .setCollideWorldBounds() для некоторых сгенерированных прямоугольников, которые я использую для весла.

Вот мой код

function create() {

    gameState.playerPaddle = this.add.rectangle(50, 400, 50, 200, 0x000000);
    gameState.compPaddle = this.add.rectangle(950, 400, 50, 200, 0x000000);

    gameState.cursors = this.input.keyboard.createCursorKeys();

    // makes paddles interactive
    gameState.playerPaddle.setInteractive();
    gameState.compPaddle.setInteractive();

    // Should stop the shapes from leaving the screen but doesn't
    gameState.compPaddle.setCollideWorldBounds(true);
    gameState.playerPaddle.setCollideWorldBounds(true);

};

function update() {
    if (gameState.cursors.down.isDown){
        gameState.playerPaddle.y += 10; 
    }
    if (gameState.cursors.up.isDown) {
        gameState.playerPaddle.y -= 10;
    }
};

Это выдает

TypeError: gameState.compPaddle.setCollideWorldBounds не является функцией

IПредположим, это потому, что я использую фигуру вместо спрайта, но есть ли какой-нибудь способ иметь подобную функциональность на сгенерированной Phaser фигуре? Я не смог ничего найти в документах.

1 Ответ

1 голос
/ 09 октября 2019

Оказывается, я забыл добавить физический объект в мою конфигурацию.

Пример:

physics: {
    default: 'arcade',
    arcade: {
      gravity: { y: 200 },
      enableBody: true,
    }
}
...