Я следую учебному пособию по космическим шутерам для игры, которую разрабатываю, изучая Javascript. В этом руководстве многие классы помещаются в один и тот же файл и накладываются друг на друга, но я читал, что это не очень хорошая практика, и у всех классов должен быть свой отдельный файл. Ссылка на учебник здесь ...
https://yorkcs.com/2019/02/08/build-a-space-shooter-with-phaser-3-4/
Я убедился, что все напечатано правильно, но всякий раз, когда я запускаю его в Chrome (и я тоже очистил свой кэш), я получаю сообщение об ошибке, которое говорит ...
Uncaught TypeError: Невозможно прочитать свойство 'getFirstTick' с нулевым значением
Выдает ошибку в строке 21 врагов.js для этой строки кода ...
this.play( 'basicenemy' );
Я пробовал несколько вещей, потому что у меня были разные ошибки. Я думаю, что сделал ошибку, следуя отдельным урокам. Я попытался добавить изображения в сами файлы вместо файла sceneMain.js, где первый уровень, потому что в какой-то момент он говорил мне, что play () не определена.
entities.js
class Entities extends Phaser.GameObjects.Sprite
{
constructor(scene, x, y, key, type)
{
super(scene, x, y, key, type);
this.scene = scene;
this.scene.add.existing(this);
this.scene.physics.world.enableBody(this, 0);
this.setData("type", type);
this.setData("isDead", false);
}
}
enemies.js
class BasicEnemy extends Entities
{
constructor(scene, x, y)
{
super(scene, x, y, 'basicenemy', 'BasicEnemy');
this.body.velocity.y = Phaser.Math.Between(50, 100);
this.shootTimer = this.scene.time.addEvent({
delay: 1000,
callback: function() {
var laser = new EnemyLaser(
this.scene,
this.x,
this.y
);
laser.setScale(this.scaleX);
this.scene.enemyLasers.add(laser);
},
callbackScope: this,
loop: true
});
this.play( 'basicenemy' );
}
}
sceneMain.js
//The Bullet Group
this.basicEnemy = this.add.group();
this.enemyLasers = this.add.group();
this.playerLasers = this.add.group();
this.time.addEvent({
delay: 100,
callback: function() {
var enemy = new BasicEnemy(
this,
Phaser.Math.Between(0, this.game.config.width),
0
);
this.basicEnemy.add(enemy);
},
callbackScope: this,
loop: true
});
В sceneMain.js Я пытаюсь заставить врагов появляться из верхней части экрана с помощью этой строки ...
this.basicEnemy.add(enemy);
Любая помощь будет принята с благодарностью.