setCollideWorldBounds和重叠Phaser 3的问题

问题描述

我在Phaser 3中遇到问题。

当setCollideWorldBounds出现错误消息“无法读取null的属性'setCollideWorldBounds'”,并且重叠功能不起作用。最奇怪的是,在我的游戏配置中,我的调试选项为true,但仅在此sprite中不可见。

游戏配置

export const config = {
  type: Phaser.AUTO,backgroundColor: "#125555",width: 1200,height: 900,scene: Battle,physics: {
    default: "arcade",arcade: {
      debug: true,},};

const game = new Phaser.Game(config);

Player.ts

 export class Player extends Phaser.Physics.Arcade.Sprite {
  constructor(scene: Phaser.Scene,texture: string) {
    super(scene,config.width / 2,config.height - 150,texture);
    scene.add.existing(this);
  }
....

我的场景

export class Battle extends Phaser.Scene {
  private player: Player;
  private enemy1: Enemy;
  private enemy2: Enemy;
  private enemy3: Enemy;
  constructor() {
    super("playGame");
  }
  preload() {
    this.load.image("background","assets/space.png");
    this.load.image("player","assets/playerShip.png");
    this.load.image("bullet","assets/laserBullet.png");
    this.load.image("enemy1","assets/enemy1.png");
    this.load.image("enemy2","assets/enemy2.png");
    this.load.image("enemy3","assets/enemy3.png");
  }

  create() {
    this.player = new Player(this,"player");
    this.player.setScale(0.09);
    this.player.setCollideWorldBounds(true);

    this.enemy1 = new Enemy(this,"enemy1");
    this.enemy2 = new Enemy(this,"enemy2");
    this.enemy3 = new Enemy(this,"enemy3");
    this.enemies = this.physics.add.group();
    this.enemies.add(this.enemy1);
    this.enemies.add(this.enemy2);
    this.enemies.add(this.enemy3);
    this.playerCollision = this.physics.add.overlap(
      this.player,this.enemies,this.hitPlayer,null,this
    );
  hitPlayer(player: Phaser.Physics.Arcade.Sprite,enemies) {
    this.resetEnemy(enemies);
  }

  resetEnemy(enemy) {
    enemy.y = 0;
    let randomX = Phaser.Math.Between(0,config.width);
    enemy.x = randomX;
  }
....

解决方法

您需要将播放器添加到场景物理中。 这应该可以解决。

 export class Player extends Phaser.Physics.Arcade.Sprite {
  constructor(scene: Phaser.Scene,texture: string) {
    super(scene,config.width / 2,config.height - 150,texture);
    scene.add.existing(this);
    scene.physics.add.existing(this);
  }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...