HTML5游戏开发进阶 9:添加武器和战斗

    将为车辆、飞行器和炮塔装上武器,通过执行战斗指令,如进攻、守卫、巡逻和追踪等,允许单位以一种智能的方式战斗。最后,我们还要实现战争迷雾,在地图上限制玩家的视野,这将允许玩家使用一些更有趣的战斗策略,如偷袭、伏击。

9.1 实现战斗系统

    所有的单位和炮塔都具有自己的武器和炮弹类型。攻击敌人时,单位首先进入射程,转向目标,然后向敌人发射一枚炮弹。单位发射炮弹后,需要等待武器重新装填炮弹,才能进行下一次发射。

   炮弹本身是一个独立的单位,它有自己的动画逻辑。发射后,炮弹将径直飞向目标,接触目标后爆炸。

   添加炮弹:bullets.js

   定义了四种炮弹类型:燃烧弹,导弹,榴弹,子弹。每一种炮弹都有一些共同的属性。

  •    speed:炮弹飞行的速度
  •    reloadTime:装填时间,两次发射之间动画循环的次数。
  •    damage:破坏力,爆炸时对目标造成的破坏程度
  •    range:射程,炮弹失效前能够飞行的最大距离。

   定义了两个动画模式:fly和explode。fly模式有八个方向,类似于车辆和飞行器。explore模式仅有一个方向

   实现战斗命令:

   飞行器的战斗指令

  • attack:攻击,在目标的射程范围内移动,并向目标射击。
  • float:停留,在某一点停留,攻击任何靠近的敌人
  • guard:守卫,跟随一个友方单位,攻击任何靠近的敌人
  • hunt:搜寻,主动在整张地图中搜寻并攻击敌人
  • patrol:巡逻,在两点之间来回移动,并攻击任何靠近的敌人
  • sentry:哨戒,在某一点停留,攻击敌人,比float模式更主动

    选中飞行器后,右击敌方或友方单位会命令飞行器攻击或守卫该单位。直升机可以攻击地面和空中的单位,但战斗机只能攻击空中的单位。

    通常,sentry、hunt、patrol指令模式仅供计算机AI使用,玩家无法直接向自己的单位下达这些指令。这样可以增强游戏对玩家的挑战性。

    车辆的战斗指令

  • attack:攻击,在目标的射程范围内移动,并向目标射击。
  • float:停留,在某一点停留,攻击任何靠近的敌人
  • guard:守卫,跟随一个友方单位,攻击任何靠近的敌人
  • hunt:搜寻,主动在整张地图中搜寻并攻击敌人
  • patrol:巡逻,在两点之间来回移动,并攻击任何靠近的敌人
  • sentry:哨戒,在某一点停留,攻击敌人,比float模式更主动

9.2 创建智能的敌人

    敌人AI的主要目的是增强关卡的挑战性,为关卡中的玩家提供更精彩的游戏体验。重要的是,对RTS类游戏,尤其是单人战役模式,敌人的AI并不需要像象棋大师一样强大。事实上,战斗指令模式和条件脚本事件的简单组合,就足够提供给玩家非常强的游戏体验了。

    通常,使敌人更聪明的方式就是,在每一个关卡,敌人的AI都不一样。

    在简单的关卡中,玩家和计算机扮演的敌人都没有任何生产性设施,只有地面单位,我们唯一能做的就是驱动敌军去进攻玩家。这类关卡中,patrol模式和sentry模式往往被极为频繁地使用。我们可以创建这样一个简单的关卡:某个固定的时间或某个固定的时间(比如,当玩家到达某个地点或建造了某座建筑)发生时,玩家就会遭到敌军的攻击。

    在更加复杂的关卡中,我们允许敌人建造单位,并使用时间触发器和hunt指令,在固定的时间间隔后,集合敌军单位去攻击玩家。这样游戏就更具有挑战性。

    小技巧:你可以基于不同的难度设定来分别实现触发器和起始单位,这样对同一个关卡,玩家也可以选择简单模式或挑战模式。

9.3 添加战争迷雾

     战争迷雾通常是指,覆盖着地图上所有未探索区域的深色的覆盖物。当玩家单位在地图上移动时,迷雾在单位的视野中消失。

    为游戏带来了“探索”和“阴谋”元素。单位可以在迷雾下隐藏起来,我们也能够使用隐藏基地、伏击、偷袭等策略。

    有些RTS游戏在区域被探索之后,迷雾就永久移除了,还有一些游戏仅仅移除玩家单位的视野内的迷雾,一旦单位离开,迷雾又会重新覆盖。我们的游戏使用第二种实现。

     fog.js

    禁止在迷雾上建造建筑



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值