Фаза 3: невозможно прочитать свойство '$' из неопределенного - PullRequest
0 голосов
/ 15 апреля 2020

Итак, я был в процессе разработки игры с Phaser 3, и эта ошибка появилась в консоли:

Невозможно прочитать свойство 'startSystem' из неопределенного

Вот м HTML код

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        * {
            padding:0px;
            margin: 0px;
            overflow: hidden;
        }

    </style>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Shoot'Em</title>
   <script src="phaser.min.js"></script>
   <script src="game.js"></script>
</head>
<body>
</body>
</html>

А вот мой JS Код:

var config = {
    type: Phaser.AUTO,
    width: window.innerWidth,
    height:window.innerHeight,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 300 },
            debug: false
        }
    },
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

var game = new Phaser.Game(config);
var platforms
function preload ()
{
    this.load.image('player1', 'Player.png')
    this.load.image('player2', 'Player2.png')
    this.load.image('platform', 'Platform.png')

}

function create ()
{
       ???----➤game.physics.startSystem(Phaser.Physics.ARCADE);<---?????


    //Create Platforms
    platforms.create(400, 568, 'platform').setScale(2).refreshBody();
    platforms.create(600, 400, 'platform').setScale(0.1).refreshBody();
    platforms.create(50, 250, 'platform').setScale(0.1).refreshBody();
    platforms.create(750, 220, 'platform').setScale(0.1).refreshBody();

    //Player 1
    player1 = this.physics.add.sprite(100, -200, 'player1');
    player1.setBounce(0.95);
    player1.setCollideWorldBounds(true);
    player1.body.setGravityY(300);
    this.physics.add.collider(player1, platforms);

    //Player 2
    player2 = this.physics.add.sprite(300, -200, 'player2');
    player2.setBounce(0.95);
    player2.setCollideWorldBounds(true);
    player2.body.setGravityY(300);
    this.physics.add.collider(player2, platforms);

 emitter = game.add.emitter(0, 0, 100);

    emitter.makeParticles('player1');
    emitter.gravity = 0;

    game.input.onDown.add(particleBurst, this);

}


function particleBurst(pointer) { 
    emitter.x = pointer.x;
    emitter.y = pointer.y;
    emitter.start(true, 2000, null, 10);
}

Где находятся знаки остановки, где останавливается программа , Я работаю на локальном хосте.

К вашему сведению, все файлы, используемые в коде, находятся в одной папке

ny Любая помощь будет приветствоваться! ?

1 Ответ

2 голосов
/ 18 апреля 2020

В вашем примере я обнаружил несколько ошибок, возможно, эти шаги помогут исправить это:

  1. Вам вообще не нужно звонить game.physics.startSystem(Phaser.Physics.ARCADE);. Просто удалите эту строку.
  2. Добавить update Функция
  3. platforms.create не будет выполнена, поскольку platforms не инициализированы. Вот пример о группах
  4. game.add также не удастся - вам не нужно game, используйте this для доступа к текущей сцене.

Есть много примеров с Phaser 2, который использует game, но в Phaser 3 вы можете просто получить доступ к сцене из create и update, чтобы добавить новые объекты.

...