Unity3d 学习之路——简单巡逻兵

本文介绍了使用Unity3d创建一个简单的游戏,玩家需避开巡逻兵并收集水晶。游戏规则包括巡逻兵的智能行为,如在设定范围内追击玩家。通过C#的委托和事件实现发布与订阅模式,使用工厂模式生产巡逻兵。文章还分享了游戏的成品图、UML图以及代码实现,并总结了对发布与订阅模式的理解和学习收获。
摘要由CSDN通过智能技术生成

Unity3d 学习之路——简单巡逻兵

游戏规则与游戏要求

智能巡逻兵

  • 游戏规则
    使用WSAD或方向键上下左右移动player,进入巡逻兵的追捕后逃脱可积累一分,若与巡逻兵碰撞则游戏结束,收集完地图上的所有水晶即可获胜。
  • 游戏设计要求:

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

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

成品图

先看一下成品图吧,感觉是除了第一次作业之外,这次是自己做得最好的一次了。

做了整整两天,界面还没很完美。

游戏UML图

这里写图片描述

游戏实现

用到了C#的委托和事件实现发布与订阅模式,没有实现动作分离管理。
+ SSDirector,IUserAction,和ISceneController和之前的差不多甚至一样
+ 地图的绘制
建好一个Plane,再绘制好围墙,和几个触发器:

  • 巡逻兵的动作(Patrol.cs):
    • 属性与变量
public enum PatrolState { PATROL,FOLLOW};
public int sign;           //the patrol in which area
public bool isFollowPlayer = false;
public GameObject player=null;         //the player
public
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值