Phaser3入门教程:第一个Phaser3游戏(中文版)(四)

  • 平台

 

我们刚刚在create函数中加了一段代码,让我们详细解释一下,首先是这句:

platforms = this.physics.add.staticGroup();

这句代码创建了一个静态物体组,并赋值给了变量platforms。在Arcade物理模式中,有两种属性的物体:动体和静体。所谓动体就是会移动的物体,它们因为有速度或加速度而移动,也可能被别的物体碰撞后被弹开。静体就是不会移动的物体,它们有着固定的位置和大小,不会受重力而下降,你也不能给它们一个速度让它们跑起来。就像地面或平台,可以让角色在上面跑动。

那么什么是组呢?我们把相似的若干物体放在一各容器,控制多个物体就像控制一个物体一样。这样我们就可以检测这个组与其他物体的碰撞情况。通过组的方法函数create,可以创建组内的子物体,并且自动赋予它们相应的物理属性,和一些相关的处理。

在我们的平台组里我们用create创建了一些平台:

platforms.create(400, 568, 'ground').setScale(2).refreshBody();

 

platforms.create(600, 400, 'ground');

platforms.create(50, 250, 'ground');

platforms.create(750, 220, 'ground');

回顾上一节创建的场景:

我们载入了一张名为ground的图片,这是一个简单的绿色矩形,400x32像素,正好可以当我们的平台用:

第一行的代码是在坐标(400,568)新建了一个地面(请牢记,图片的原点是在中心)。问题是我们需要一个和屏幕一样宽的地面,以避免玩家掉下去。怎么办呢?其实我们可以将图片拉宽到两倍。调用方法setScale(2),图片就变成我们所需的800x64大小了。紧接着我们必须调用refreshBody()方法,因为改变一个静物后,要告诉系统更新它。

地面处理好了后,下面就是处理其他的平台:

platforms.create(600, 400, 'ground');

platforms.create(50, 250, 'ground');

platforms.create(750, 220, 'ground');

这个过程和前面相似,只是我们不用再改变图片的大小了,因为原尺寸就正好。

这三个平台放在合适的位置,以便玩家的角色能在它们之间跳跃。

下一节我们就要加上玩家的角色了。

猜你喜欢

转载自blog.csdn.net/sql_cn/article/details/83210787
今日推荐