3D游戏编程 作业七 智能巡逻兵

本文介绍了一款使用动画的智能巡逻兵游戏设计思路,重点讨论了游戏中的巡逻兵行为逻辑及实现方式,包括巡逻兵如何根据玩家的位置进行追击、碰撞障碍物后的反应等,并详细阐述了订阅与发布模式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能巡逻兵

  • 游戏设计要求:
    1. 创建一个地图和若干巡逻兵(使用动画);
    2. 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址。即每次确定下一个目标位置,用自己当前位置为原点计算;
    3. 巡逻兵碰撞到障碍物,则会自动选下一个点为目标;
    4. 巡逻兵在设定范围内感知到玩家,会自动追击玩家;
      失去玩家目标后,继续巡逻;
    5. 计分:玩家每次甩掉一个巡逻兵计一分,与巡逻兵碰撞游戏结束;
  • 程序设计要求:
    1. 必须使用订阅与发布模式传消息
    2. 工厂模式生产巡逻兵

实践内容

  • 订阅与发布模式

    在订阅与发布模式,消息的发送方,叫做发布者(publishers),消息不会直接发送给特定的接收者(订阅者)。发布者和订阅者之间多了一个发布通道;一方面从发布者接收事件,另一方面向订阅者发布事件;订阅者需要从事件通道订阅事件,以此避免发布者和订阅者之间产生依赖关系。
    在本次作业中,使用玩家作为消息发布方,将自己的相关信息(如:生存状态,位置,所在区域)发送给订阅者,订阅者根据自己的需求,从所有信息中得到自己想要的部分(如:场景控制器判断游戏是否结束,巡逻兵判断是否在自己所在区域,是否追击),并根据信息做下一步动作。
    游戏设计过程中,发布对象为玩家,发布信息有:存活状态,位置,所在区域。订阅者有巡逻兵:根据玩家所在区域判断是否追击、根据玩家状态判断是否追击、根据玩家位置判断追击方向;场景控制器:根据玩家状态判断游戏是否结束;记分员:根据玩家所在区域判断是否得分。
  • 工厂模式
    与上次作业鼠标打飞碟小游戏的飞碟工厂类似,这里就不再做过多解释了。
  • UML图 
  • 游戏预制
    本次作业包括三种预制:玩家、巡逻兵以及地形,其中3D模型基本是直接借用或者间接组装的。
    Hero

    Patrol

    SceneModel
  • 代码实现
    场景管理和动作管理的实现在前几次作业中已做过详细解释,所以在这里我将着重解释说明三个控制器代码的实现——玩家控制器HeroController、巡逻兵控制器PatrolController、摄像头控制器CameraFlow。
  1. 玩家控制器HeroController

    需要注意,这里的scoreKeep是发布者,然后功能实现就是用wsad来控制玩家的上下左右。
  2. 巡逻兵控制器PatrolController

    这里主要实现两个功能:一是巡逻兵碰到障碍物改变方向,感知玩家并追击玩家;二是追捕到玩家判定游戏结束。
  3. 摄像头控制器CameraFlow

    这里主要是通过调整相机的距离和角度来增加玩家游戏的视觉感官体验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值