美文网首页让前端飞程序员
小游戏开发 Mario (9)

小游戏开发 Mario (9)

作者: zidea | 来源:发表于2019-01-22 06:02 被阅读77次

上两周主要给大家介绍了游戏中是如何检测游戏角色和游戏角色和障碍物间的碰撞。今天回到 mario 继续写我们 super mario 这款游戏。

在开始新的内容之前,我们需要整理一下前面的代码。我们看图中的 loadBackgroundSprites 和下面定义的 comp 对象都是应该属于 level(关卡),因为他们都会关卡息息相关。关卡包含背景图的组合(这里所谓组合将许多层组合为背景展示给用户)

创建 Level 类,Level 中我们将 compositor(图层组合)游戏角色集合 entities。

介绍一下 ES6提供了Set 数据结构。类似于数组,但是没有重复值。下面代码可以帮助大家理解 Set 数据结构。

回到主(main.js)函数,由于 comp 已经成为 Level 一个属性,我们就可以删除此行代码。

我们将与 Level 有关的代码移到 Level 类中来整合代码,已经类的概念,也就是面向对象编程的终极目标就是复用代码

在 loader.js 我们对 loadLevel 进行改动,改动力度很大,稍一说明。在读取 json 和加载背景 sprite。两个加载完成后,我们需要创建 Level 实例,这个实例提供 comp 和 entities 。我们现在就把 compositor 封装到 Level 类中了。然后把 Mario 看作 Level 的 entities 集合中的一个。

切换到 layer.js 文件中,进行一些调整,这里内容显然易见,就不做过多解释了。

修改main.js 中代码,如下图。

现在一切和调整代码之前一样,除了没有看到主角 mario,我们要看到 mario 就还需要一些工作,就是将 mario 添加到 entities 中。

我们把 mario 的 update 方法也移到 Level 这类中,这样看起来就更合理,因为所有角色的都在 entities 这个集合中,所以可以 level 的 update 方法代替 mario(做一个 entity)他自己方法。然后在 level 的 update 方法中,我们遍历 entities 然后调用每一个 entity 的 update 方法。

相关文章

  • 小游戏开发 Mario (9)

    上两周主要给大家介绍了游戏中是如何检测游戏角色和游戏角色和障碍物间的碰撞。今天回到 mario 继续写我们 sup...

  • 小游戏开发 Mario (3)

    在开始新的内容之前,我们先优化一下上一次代码。我们看图中的代码 发现(1)加载图片和(2)加载关卡(level)是...

  • 小游戏开发 Mario (1)

    前言 当下如火如荼的微信小游戏,简单且好玩,自己体验了一下像跳一跳这样的游戏。作为一名开发人员,当然也想自己开发款...

  • 小游戏开发 Mario (6)

    再开始今天新的内容前,我们来修正两个错误。 第一个是我们为重力补上 deltaTime。然后适当地调整 gravi...

  • 小游戏开发 Mario (7) 碰撞

    今天先停下来,回看了一下自己发布的 mario 游戏开发分享,发现有些朋友对游戏开发的一些基础知识还不太了解。本周...

  • 小游戏开发 Mario (8) 碰撞

    继续上次的游戏碰撞检测的主题,上次我们通过方法 testCollision 来检查两个物体是否碰撞,如果发生碰撞就...

  • 你必须先成为你自己,爱才有意义

    Mario:“why are you here?” Mario: “why are you g...

  • Mario

    小时候我也认识他~~,长大了渐渐的远离了。

  • Mario

    “我有一条黑狗,它名叫Mario 。每当这黑狗出现,我就感到空虚,生活也慢了下来。它总不期而至的出现在我的面前。黑...

  • Hi

    Hello,mario!

网友评论

    本文标题:小游戏开发 Mario (9)

    本文链接:https://www.haomeiwen.com/subject/aylgdqtx.html