游戏简介

  • 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-牧师与魔鬼

参考资料

  • 空间与运动
  • 学习Unity(5)小游戏实例——牧师与魔鬼
  • Unity3d学习之路-牧师与魔鬼

3D游戏设计-牧师与魔鬼相关推荐

  1. 3D游戏设计-牧师与魔鬼_动作分离版

    天空盒 天空盒 前情提要 3D游戏设计-牧师与魔鬼 游戏改进 将每个需要移动的游戏对象的移动方法提取出来,建立一个动作管理器来管理这些移动方法. 优点: 程序更能适应需求变化 对象更容易被复用 程序更 ...

  2. 【3D游戏编程与设计】四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版

    [3D游戏编程与设计]四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版 基本操作演练 下载 Fantasy Skybox FREE, 构建自己的游戏场景 下载 Fantasy Skyb ...

  3. 3D游戏设计作业(四)

    一.下载 Fantasy Skybox FREE, 构建自己的游戏场景 1.下载Fantasy Skybox   2.创建material   3.将下载好的素材拖动到material中  4.显示效 ...

  4. 3d游戏设计读书笔记四

    3d游戏设计读书笔记四 一.基本操作演练[建议做] 下载 Fantasy Skybox FREE, 构建自己的游戏场景 a. 在AssetStore中搜索Fantasy Skybox FREE并下载. ...

  5. 3D游戏设计和创作工具学习教程 3D Game Design Creation Tools

    语言:英语+中英文字幕(根据原英文字幕机译更准确) 大小解压后:1.94G 1280X720 mp4 三维游戏设计和创作工具 用扎实的工作流程开始开发游戏 课程获取:3D游戏设计和创作工具学习教程 3 ...

  6. 3D游戏设计读书笔记二

    3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系.   GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...

  7. 3d游戏设计读书笔记六

    3d游戏设计读书笔记六 一.改进飞碟(Hit UFO)游戏: 游戏内容要求: 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 更改原 UFO_action 类 为 ...

  8. 3D游戏设计读书笔记一

    3D游戏设计读书笔记一 二.游戏分类与热点探索 1.使用思维导图描述游戏的分类.(游戏分类方法特别多) 2. 结合手机游戏市场的下载量与排名等数据,结合游戏分类图,描述游戏市场的热点. (1)2016 ...

  9. 3D游戏设计读书笔记七

    3D游戏设计读书笔记七 智能巡逻兵 提交要求: 游戏设计要求: 创建一个地图和若干巡逻兵(使用动画): 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址.即每次确定下一个目标位置,用自己当前位 ...

最新文章

  1. ASP.NET程序中常用的三十三种代码(转载)
  2. SEO三种职位类型:编辑型SEO、技术型SEO、营销型SEO详解
  3. CORS 请求未能成功_CORS攻击概述
  4. 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
  5. [转]详细介绍如何做关联
  6. c#winform演练 ktv项目 在dataGridView中显示歌曲列表
  7. 计算机网络「五」 运输层
  8. 百度搜索关键字抓取_怎么使百度竞价的效益最大化
  9. bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易(最短路)
  10. 更改mysql默认连接数_修改mysql最大连接数
  11. 攻防世界misc解题(一)
  12. 金蝶K3工业单据中间层插件开发教程
  13. Express高效查询纯真IP库插件lib-qqwry
  14. 棋盘(Checkerboard)算法
  15. 关于dell戴尔笔记本磁盘空间莫名被占及删除System Volume Information
  16. 微信扫一扫(wx.scanQRCode)功能新手可能遇到的问题
  17. Word表格快速、完美转换成Excel
  18. AI人工智能入门-概念介绍和学习路线
  19. Effie:沉浸写作,创造价值
  20. linux字体渲染包,CentOS 7用了本站一条命令字体渲染包前后的字体效果展示

热门文章

  1. Win8开机系统引导如何删掉onekey项
  2. php file not found,关于php 执行后 File not found.
  3. burp插件系列1 passive-scan-client
  4. 解决:谷歌浏览器任务栏图标变白
  5. SecureCRT代理上网
  6. windows电脑变成wifi热点命令
  7. html写流星雨(完整代码)
  8. Android之greenDao(初识greenDao)
  9. html表格不平均分割,averageifs函数计算不出来
  10. 通用网址的注册以及使用注意事项