模型与动画

智能巡逻兵

游戏设计要求:

  • 创建一个地图和若干巡逻兵(使用动画);
  • 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址。即每次确定下一个目标位置,用自己当前位置为原点计算;
  • 巡逻兵碰撞到障碍物,则会自动选下一个点为目标;
  • 巡逻兵在设定范围内感知到玩家,会自动追击玩家;
  • 失去玩家目标后,继续巡逻;
  • 计分:玩家每次甩掉一个巡逻兵计一分,与巡逻兵碰撞游戏结束;

程序设计要求:

  • 必须使用订阅与发布模式传消息
    subject:OnLostGoal
    Publisher: ?
    Subscriber: ?
  • 工厂模式生产巡逻兵

资源下载

在Asset Store中下载Survival Shooter资源

背景设置

将下载资源中的Environment拿来当做地图即可

订阅与发布模式

订阅与发布模式完成Player、Patrol、SceneController以及ScoreManager之间的通信。首先定义了一个抽象类Subject.cs(发布者)和一个接口Handle.cs(订阅者)。
Subject中有一个List存放所有的Handle,并且有增加和删除Handle的方法Attach ()和Detach ()。还有一个Notify ()方法向每一个Handle发送消息。Handle中则有处理Subject发送过来的消息的方法Reaction ()。Player继承Subject作为发布者将自己的状态以及位置发送给每一个Handle。

Patrol、SceneController和ScoreManager都作为Handle接受到Player发送过来的消息,但是不同的Handle则会对这些信息做出不同地处理。巡逻兵Patrol需要知道玩家的位置,以及是否存活;而SceneController和ScoreManager并不在乎玩家的位置,它们只关心玩家是不是还活着。

游戏实现与代码

游戏视频
Github链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值