总是想想为什么你在做什么
这组更改包括清理和组织,收藏品的开始,健康恢复以及我称之为“不成功”的内容。 稍后,我将解释我的意思,但是首先让我们将这些链接排除在外。 您可以在此处查看代码,也可以在此处播放。 既然这已经不成问题,我们就可以详细介绍。
收集所有健康
他们几乎在每个游戏中都存在,或者至少在每个平台游戏中都存在。 无论是医疗包,硬币还是先驱球,它们无处不在。 我对收藏品的第一个想法是在对玩家和敌人实施健康之后。 现在我可以失去健康了,我需要一种恢复健康的方法,对吗? 开始编写代码!
我要做的第一件事就是建立一组收藏品,就像我以前对敌人,积木和子弹所做的一样。

一旦我有地方放置它们,我就创建了createHealthBlock函数来开始添加收藏品。

该功能的大部分与到目前为止我用于创建其他所有内容的设置非常相似,但此处突出的部分是我现在将移动方法与创建的对象一起包括在内。 这是由于我需要组织代码。 我正在考虑将收藏品放到自己的一个或多个文件中,以减轻状态和思维的混乱。
除此之外,尽管现在我可以随时创建这些运行状况块,但我需要设置它们实际要执行的操作。 与以前处理冲突的方式几乎相同,我为重叠方法设置了一个回调,以在播放器精灵触摸我设置的组中的任何东西时调用。

一旦我知道发生了重叠,就可以检查所触摸的内容并做出相应的响应。

在这种情况下,当玩家触摸到一个健康方块时,我会检查是否需要治疗。 如果是这样,我们会增加生命值,扩大生命线并摆脱收藏品。 很简单,对吧?
谈到健康吧
这些已部分移出到自己的文件中。 关注点分离和所有这些。

现在,我从使用状态的状态中抽象出了几种方法,以便状态更简洁,如果需要,我可以在更多状态中使用Health对象。 我计划继续为该对象增加更多功能,以进一步清理它。
您还将注意到其中的checkHide函数是全新的。 那是我前面提到的“不成功”的一部分。 既然我已经提到了两次,那么我现在也可以解释一下。
“不成功”
基本上,它只是从健康状况栏消失而已。 当前的实现从一开始就显示了健康条,但是在10秒钟内未发生损坏后将其淡出。 在下面查看。

现在,我认为这是“不成功”而不是失败的原因有三点。 首先,它起作用。 它的作用与锡罐上所说的完全相同。 其次,它促使我开始考虑为什么要实现功能,以便我可以判断是否实际需要它们。 第三,它使我考虑到某个功能的最初想法可能没有达到所需的完善程度。
因此,此功能的最初体现是代码中当前所反映的内容,但是此实现至少具有一个主要缺陷:玩家无法随时检查自己的健康状况。 我敢说,如果您的游戏中装有卫生系统,则肯定需要一种快速简便的方法来检查自己的健康状况。
如果是这样,我为什么首先要执行淡出? 好吧,为了简单起见。 我想在不需要时从播放器的视图中消除混乱。 如果您身体健康,就不需要任何阻碍或分散您注意力的健康吧。 如果您看到敌人,则无需真正查看敌人的健康状况,就可以对其真正造成伤害。 就像玩家未受到伤害一样,看到完整的健康条也不会获得任何新信息,并且(即使有一点点)它也使您摆脱了难以置信的悬念。
您可能会想,“为什么不像其他游戏一样将健康标准放在首位呢?”嗯,这种方法也有优缺点。 就像褪色的健康栏一样,它消除了角色周围屏幕上的一些杂物,但是它还有一个很大的缺陷:它显示了低效的运动效果。
这意味着什么? 简而言之,与查看角色相比,我必须付出更多的努力才能看到屏幕顶部。 如果我的角色上方有一个健康栏,那么我可以立即看到还剩下多少健康。 如果我在屏幕顶部(最有可能不在我的角色所在的位置)有一个健康栏,那么我就必须将眼睛移开我应该集中精力检查的健康状况。 暂时缺乏专注力可能足以让屏幕上的敌人压倒我,而我可能会根据AI或敌人数量将游戏难点归因于游戏,而实际上它是由看起来似乎毫无意义的东西无意中引入的,屏幕上的健康栏。
是的 我认为可以稍微调整一下“不成功”以取得成功。
切换齿轮
那感觉有点高,所以我要很快又成功地取得成功。 敌人现在可以行动了! 就像我对运行状况收集器所做的一样,我在创建对象时向敌人添加了move方法,这样它比坐在那里什么都不做更具威胁性。

在这种情况下,我所要做的就是使敌人稍微靠近玩家,无论他们身在何处。 我想像播放器当前一样更新它以加快速度,并赋予它跳跃的能力,以至于无处躲藏。 此外,我可以将移动功能更新为可收集的移动 ,因为它可以检查正在移动的敌人类型并根据该信息更改其移动方式。
下一步是什么
不知道。 这是一个谎言; 我有很多想法。 我只是不知道我首先要关注哪个。 大多数是对当前实施的扩展。 我们将看到我有时间去工作,而这一切取决于使游戏变得更有趣的因素。