【问题标题】:PHASER - pressing shoot button to fire bullets crashes gamePHASER - 按下射击按钮发射子弹崩溃游戏
【发布时间】:2017-11-04 01:33:28
【问题描述】:

开始在 Phaser 中进行一些编码,在构建一个小游戏时遇到了一个问题。每次我们拍摄游戏都会崩溃。 下面是与从我们的角色发射子弹有关的以下代码。

preload:
    game.load.image('bullets','http://examples.phaser.io/assets/bullets/bullet11.png');

var bullets;

create (){
bullets = game.add.group();
     bullets.enableBody = true;
     /*bullets.physicsBodyType = Phaser.Physics.ARCADE;
     bullets.createMultiple(30, 'bullet');
     bullets.setAll('anchor.x', 0.5);
     bullets.setAll('anchor.y', 1);
     bullets.setAll('outOfBoundsKill', true);
     bullets.setAll('checkWorldBounds', true);
     */

fireButton = game.input.keyboard.addKey(Phaser.Keyboard.DOWN);
}

update () {

   if (fireButton.isDown)
    {
        fireBullet();
    }

function fireBullet () {

    var text = game.add.text(400,200,'rrrrrrrr'); //used to debug collision
    bullets.create(player.x+40,player.y,'bullets');
    //bullets.body.velocity.x=+50;
}

}

以上

function firebullet()

目前用于发射子弹(不会移动)

但是一旦我们添加了以下解决方案(在其他示例中使用)

 bullets.body.velocity.x=+50;

当我们尝试发射子弹时游戏崩溃。

提前感谢您的帮助。 对不起,可怕的缩进

【问题讨论】:

  • 请在浏览器的控制台窗口中发布错误和报告的任何消息。还可以尝试使用浏览器的 JavaScript 调试器来调查问题。
  • 另外,你知道.x=+50.x+=50 是不同的东西吗?我想你想要.x+=50 而不是.x=+50
  • 请注意,您的计算机不是中弹的! ;)
  • 嘿,戴,是的,我知道这一点,并尝试两者都没有可用至于你的另一个问题,我得到的错误是:从原点'null'访问'phaser.io/sandbox/assets/games/invaders/bullet.png'的图像已经被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。响应的 HTTP 状态代码为 404。 VM2640 phaser.min.js:20 Phaser.Loader - image[bullet]: error loading assets from URL assets/games/invaders/bullet.png
  • 即使它说它无法访问图像 - 如果我们删除速度代码 - 它工作正常(除了子弹不移动。)

标签: javascript phaser-framework


【解决方案1】:

Phaser 武器类应该可以解决您的问题。 See this example。它使在游戏中使用武器变得非常容易。另请注意,您也可以更改编号。一次允许发射 1 发子弹,而不是如本例所示一次发射 1 发子弹。

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多