- 物体的速度:一个物理的世界
Phaser支持不同的物理系统,可作为插件作用于场景中。我们前面设置了Arcade物理模式,这是一个有碰撞功能的物理引擎。所以我们在这个游戏中使用该物理模式。这是一个简单且轻量的物理系统,可以很好运行在移动端的浏览器上。
当赋予精灵体一个body属性后,它就是一个受Acrade物理系统影响的物体了。它可以继承Acrade物理引擎的许多属性和方法。例如模拟一个重力效果,我们可以这样做:
player.body.setGravityY(300) |
这是随意设置的一个数值,这比合理的值要高很多,使物体感觉下落得非常快。如果将这段代码加入part5.html,你会发觉玩家会一直下落,而不会停在之前创建的地面上:
这是因为我们并没有去检测玩家角色和地面之间的碰撞。
我们已告诉Phaser地面和平台是静物,它们是不能移动的,也不能在角色碰到时它让角色马上停下来。但我们可以在角色碰到地面或平台时产生一个碰撞信号,碰撞后会对物体的速度产生影响,从而影响角色的下落状态。
我们为平台和角色创建一个碰撞器对象,物理引擎会监视他们检测它们是否发生碰撞或重叠,如果发生这种情况就会调用设定好的回调函数,但在这里我们只发生碰撞效果而不再做其他处理:
this.physics.add.collider(player, platforms); |
碰撞器的功能就是让检测到碰撞的两个物体分离开来。在这个例子中两个对象分别就是玩家角色和平台组。碰撞器会处理角色对平台和地面的碰撞。而坚硬的平台和地面是不可能晃动的。