开发的第200天。 新敌人

这个星期,我花了5个小时与电晕的精灵和物理作斗争。 对我来说幸运的是,它们有一个“防白痴系统”,所以我无法打破它们,不得不以正确的方式做事。

主要问题是,英雄用子弹击中敌人后可能会发生几件事。

选项1.子弹的元素可以与敌人的元素相同-在这种情况下,敌人会飞起来,英雄会获得一枚硬币。

选项2。子弹和敌人的元素是不同的,英雄具有正确的元素-只是出于某种原因而没有使用它。 在这种情况下,什么也没有发生,敌人仍然健在。

选项3.子弹和敌人的元素是不同的,英雄根本没有杀死敌人的元素。 在这种情况下,我们需要更改敌人的元素以使其“可杀死”。

游戏的先前版本中,此问题通过使用“盾牌”解决了-我没有更改敌人本身的元素,而是添加了一个盾牌并不断更改其元素,直到英雄用正确的盾牌击中它为止。

从逻辑的角度来看,这是可行的,但从游戏性的角度来看,这是一场灾难。

为了立即让玩家知道该敌人属于火元素,该敌人为红色。 但是后来我生成了一个盾牌,该盾牌会带有水元素,所以它是蓝色的。 结果,一个清晰的信息“通过颜色识别元素”丢失了,因为有一个红色的敌人,他周围有一个蓝色的盾牌。

因此,在新版本中,我决定摆脱盾牌的影响,而不是更改敌人周围的盾牌“气泡”的颜色,而是更改敌人的形象。

我遇到的问题是Corona不允许您:swipeSprite()

所以我走了最合乎逻辑的方式(至少我以为自己做到了)。

在英雄的子弹碰撞中…如果子弹的元素!=敌人的元素…如果英雄没有敌人的元素…消灭旧敌人并在其中放置新敌人。

对我来说听起来不错,所以我做了一段时间。

问题是—所有敌人都是预先创建的。 它们是在创建关卡时加载的,然后为它们配置一个随机元素以及许多其他用于统计数据的内容。它们具有其坐标,过渡和动画。

而且,如果您消灭了一个敌人,并在运行时加载了另一个敌人,则会引发敌人元数据的各种问题。

5小时后,我放弃了,去阅读文档(阅读文档始终是我的最后选择。不要问…)

显然-一切都没有。 因为电晕为您提供了一个简单的解决方案。 您不能滑动精灵本身,但可以替换动画数据中的imageSheet。

因此,您实际需要的只是创建一组具有不同imageSheets的动画。 并在与英雄的子弹碰撞时将它们全部擦拭即可。 这样,在加载关卡时创建的敌人的信息和物理状态仍然完好无损-您只需更改imageSeet和敌人的元素即可。

早5个小时知道这个消息真是太好了,但这就是我学习的方式。 艰难的方式。

这也是敌人的动画。 我认为他们很有趣8)