- 平台
我们刚刚在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'); |
这个过程和前面相似,只是我们不用再改变图片的大小了,因为原尺寸就正好。
这三个平台放在合适的位置,以便玩家的角色能在它们之间跳跃。
下一节我们就要加上玩家的角色了。