3D游戏设计-牧师与魔鬼

游戏简介

  • 3个牧师和3个恶魔要过河,可小船每次只能搭乘2个人。可怕的是无论在岸的哪边,如果牧师的人数比恶魔少,牧师就会被恶魔杀死。发挥你的才智,帮他们想出一条过河的办法。

游戏规则设计

  • 初始时3个牧师(方块)和3个恶魔(球)都在河的左岸
  • 船每次最多可载2人(0、1、2)
  • 船上至少有一人船才能移动
  • 点击角色,可让角色上船或上岸
  • 点击船,可让船到达对岸
  • 当某一岸的魔鬼(球)多于牧师(方块)时,游戏结束,玩家失败
  • 当所有角色到达对岸时,游戏结束,玩家成功

游戏架构: MVC

  • M(Model): 牧师(方块),魔鬼(球),船,两岸,河;全都受Controller控制。

  • V(View): 点击角色移动,点击船移动,即UserGUI和ClickGUI,用来展示交互结果。

  • C(Controller): MyCharacterController、BoatController、CoastController、FirstController,其中FirstController控制着这个场景中的所有对象,包括其加载、通信、用户输入。还有最高层的Controller:Director类,一个游戏中只能有一个实例,它控制着场景的创建、切换、销毁、游戏暂停、游戏退出等等最高层次的功能。

游戏实现

1. 上网寻找Model所需的所有资源(模型),将其存放到项目中的Assets文件中。

2. 编写代码搭建场景并实现游戏功能

BaseCode.cs
  • Director类(导演): 只有一个实例,控制着场景的创建、切换、销毁、游戏暂停、游戏退出等等。
  • SceneController接口: 导演控制场记的渠道。
  • UserAction接口: 使用门面模式,对用户的输入作出反应。(移动角色、船,重新开始游戏)
  • Moveable类: 移动物体(船,牧师,魔鬼)。
  • MyCharacterController类: 将预制中的牧师和魔鬼实例化,并将Moveable(移动角色)和ClickGUI(监测“鼠标点击角色”的事件)挂载到了每个角色上。
  • CoastController类: 将预制中的河岸实例化,右岸为起点,左岸为终点。
  • BoatController类: 将预制中的船实例化,并将Moveable(移动船)和ClickGUI(监测“鼠标点击船”的事件)挂载到了船上。
ClickGUI.cs
  • ClickGUI类: 监测“鼠标点击”事件,并调用SceneController进行响应。
FirstController.cs
  • FirstController类: 控制场景中所有对象,包括加载、通信、用户输入。在该类中还实现了游戏的逻辑结构。
UserGUI.cs
  • UserGUI类: 展示游戏结果。

3. 创建空对象命名为Main,将FirstController挂载到Main上,运行即可开始游戏。

游戏测试

  • 运行
    在这里插入图片描述

  • 点击角色(上船)
    在这里插入图片描述

  • 点击船(过河)
    在这里插入图片描述

  • 点击角色(上岸)
    在这里插入图片描述

  • 游戏结束(玩家赢)
    在这里插入图片描述

  • 游戏结束(玩家输)
    在这里插入图片描述

项目代码

https://gitee.com/Hugh488/Games_3D/tree/master/%E4%BD%9C%E4%B8%9A2-%E7%89%A7%E5%B8%88%E4%B8%8E%E9%AD%94%E9%AC%BC

运行视频

unity 3D-牧师与魔鬼

参考资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值