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-牧师与魔鬼
参考资料
- 空间与运动
- 学习Unity(5)小游戏实例——牧师与魔鬼
- Unity3d学习之路-牧师与魔鬼
3D游戏设计-牧师与魔鬼相关推荐
- 3D游戏设计-牧师与魔鬼_动作分离版
天空盒 天空盒 前情提要 3D游戏设计-牧师与魔鬼 游戏改进 将每个需要移动的游戏对象的移动方法提取出来,建立一个动作管理器来管理这些移动方法. 优点: 程序更能适应需求变化 对象更容易被复用 程序更 ...
- 【3D游戏编程与设计】四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版
[3D游戏编程与设计]四 游戏对象与图形基础 : 构建游戏场景+牧师与魔鬼 动作分离版 基本操作演练 下载 Fantasy Skybox FREE, 构建自己的游戏场景 下载 Fantasy Skyb ...
- 3D游戏设计作业(四)
一.下载 Fantasy Skybox FREE, 构建自己的游戏场景 1.下载Fantasy Skybox 2.创建material 3.将下载好的素材拖动到material中 4.显示效 ...
- 3d游戏设计读书笔记四
3d游戏设计读书笔记四 一.基本操作演练[建议做] 下载 Fantasy Skybox FREE, 构建自己的游戏场景 a. 在AssetStore中搜索Fantasy Skybox FREE并下载. ...
- 3D游戏设计和创作工具学习教程 3D Game Design Creation Tools
语言:英语+中英文字幕(根据原英文字幕机译更准确) 大小解压后:1.94G 1280X720 mp4 三维游戏设计和创作工具 用扎实的工作流程开始开发游戏 课程获取:3D游戏设计和创作工具学习教程 3 ...
- 3D游戏设计读书笔记二
3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系. GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...
- 3d游戏设计读书笔记六
3d游戏设计读书笔记六 一.改进飞碟(Hit UFO)游戏: 游戏内容要求: 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 更改原 UFO_action 类 为 ...
- 3D游戏设计读书笔记一
3D游戏设计读书笔记一 二.游戏分类与热点探索 1.使用思维导图描述游戏的分类.(游戏分类方法特别多) 2. 结合手机游戏市场的下载量与排名等数据,结合游戏分类图,描述游戏市场的热点. (1)2016 ...
- 3D游戏设计读书笔记七
3D游戏设计读书笔记七 智能巡逻兵 提交要求: 游戏设计要求: 创建一个地图和若干巡逻兵(使用动画): 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址.即每次确定下一个目标位置,用自己当前位 ...
最新文章
- ASP.NET程序中常用的三十三种代码(转载)
- SEO三种职位类型:编辑型SEO、技术型SEO、营销型SEO详解
- CORS 请求未能成功_CORS攻击概述
- 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
- [转]详细介绍如何做关联
- c#winform演练 ktv项目 在dataGridView中显示歌曲列表
- 计算机网络「五」 运输层
- 百度搜索关键字抓取_怎么使百度竞价的效益最大化
- bzoj 3392: [Usaco2005 Feb]Part Acquisition 交易(最短路)
- 更改mysql默认连接数_修改mysql最大连接数
- 攻防世界misc解题(一)
- 金蝶K3工业单据中间层插件开发教程
- Express高效查询纯真IP库插件lib-qqwry
- 棋盘(Checkerboard)算法
- 关于dell戴尔笔记本磁盘空间莫名被占及删除System Volume Information
- 微信扫一扫(wx.scanQRCode)功能新手可能遇到的问题
- Word表格快速、完美转换成Excel
- AI人工智能入门-概念介绍和学习路线
- Effie:沉浸写作,创造价值
- linux字体渲染包,CentOS 7用了本站一条命令字体渲染包前后的字体效果展示