AI塔

令人惊讶的是,为这些塔构建粗糙的原型很简单。

塔最终是一个非常简单的状态机,因此,它们的行为易于确定和编程。 塔要么在射击,要么不在。 那就是状态机。 塔通常是闲置的,除非敌人进入其范围。 然后,发射塔切换为攻击模式,瞄准并开火。 持续射击直到敌人死亡或射程超出范围。 检查范围内的其他敌人。 等等。

如您所见,塔楼向红色区域开火,目前红色区域为敌军。 我有一些粗糙的墙可以帮助人们了解地图的样子,并使其成为现实,以便部队AI必须找到围绕它们的道路。

幸运的是,由于管理状态机很容易,因此塔的代码几乎完全集中在射击的实际机制上。

 如果distance_to_closest_enemy <范围:
     move_barrel()
    如果can_shoot_yet:
        火() 

现在,在fire功能中,我实际上并没有立即伤害目标,而是产生了一颗子弹。 子弹GameObject以预定的速度向前移动,直到撞到墙壁或敌人。 如果它击中了敌人,它将召唤健康组件并分配适当的伤害。

我在决定是让子弹改变其路径以击中目标还是沿直线前进时遇到了两难选择。 此外,平衡火速,伤害和部队的健康状况都将非常困难,而且实际上只有在我站起来并安装了几种不同的部队类型和塔后才能实现。 我希望这些塔能够平稳地工作,以便使部队AI的工作变得容易一些,因为与塔AI相比,这将更加有条理和复杂。

此外,我继续进行操作,并向塔楼添加了“健康”组件。 目前,除了流弹以外,还没有办法真正伤害他们,这是我还需要解决的错误。