这篇翻译不完整。请帮忙从英语翻译这篇文章

这是Gamedev Phaser教程 16 第15步您可以在Gamedev-Phaser-Content-Kit / demos / lesson15.html完成本课程后找到源代码

而不是立即开始游戏,我们可以通过添加他们可以按的开始按钮将该决定留给玩家。我们来调查如何做到这一点。

新变量

我们需要一个变量来存储表示游戏当前是否正在播放的布尔值,另一个代表我们的按钮。将以下行添加到其他变量定义之下:

var playing = false;
var startButton;

加载按钮spritesheet

我们可以加载按钮spritesheet与我们加载球的摆动动画相同的方式。将以下内容添加到preload()函数底部

game.load.spritesheet('button', 'img/button.png', 120, 40);

单个按钮框架宽120像素,高40像素。

您还需要从Github抓取按钮spritesheet,并将其保存在您的/img目录中。

将按钮添加到游戏中

使用该add.button方法可以将新的按钮添加到游戏中将以下行添加到create()函数的底部

startButton = game.add.button(game.world.width*0.5, game.world.height*0.5, 'button', startGame, this, 1, 0, 2);
startButton.anchor.set(0.5);

button()方法的参数如下:

  • 按钮的x和y坐标
  • 要显示按钮的图形资产的名称
  • 按下按钮时将执行的回调函数
  • this指定执行上下文的引用
  • 将用于过度超出向下事件的框架

注意:超越事件与悬停相同,当指针从按钮中移出时,当按下按钮时,向下移动。

现在我们需要定义startGame()上面代码中引用函数:

function startGame() {
    startButton.destroy();
    ball.body.velocity.set(150, -150);
    playing = true;
}

当按下按钮时,我们删除按钮,设置球的初始速度并将playing变量设置true

最后对于这一部分,回到你的create()函数,找到ball.body.velocity.set(150, -150);一行,并删除它。你只需要按下按钮时移动球,而不是之前!

在游戏开始之前仍然保持桨

它按预期工作,但是当游戏尚未开始时,我们仍然可以移动桨,这看起来有点愚蠢。为了阻止这一点,我们可以利用playing变量,使得桨只有在游戏开始时才能移动。要做到这一点,调整update()功能如下所示:

function update() {
    game.physics.arcade.collide(ball, paddle, ballHitPaddle);
    game.physics.arcade.collide(ball, bricks, ballHitBrick);
    if(playing) {
        paddle.x = game.input.x || game.world.width*0.5;
    }
}

这样一来,在所有的装载和准备之后,但在实际游戏开始之前,桨是不可移动的。

比较你的代码

您可以在下面的现场演示中查看本课程的完成代码,并使用它来更好地了解它的工作原理:

下一步

在本系列文章中我们将做的最后一件事情是,通过添加一些随机化的方式,球从球上弹起来,使游戏更有趣

文档标签和贡献者

 此页面的贡献者: j787701730
 最后编辑者: j787701730,