一、基本操作演练

下载 Fantasy Skybox FREE, 构建自己的游戏场景

首先上Assert Store下载Skybox,我下载的是这一个:


之后我在unity中,把下载好的天空盒拖入摄像机中:


最后成品如下:


二、编程实践

牧师与魔鬼 动作分离版
【2019新要求】:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束
根据老师给出的类图:

我们新建的SSActionManager类需要将动作与游戏场景分离出来,其中包含的方法是characterIsClicked方法,这样能够将FirstController的功能减少:

//动作管理基类 – SSActionManager
using UnityEngine;
using System.Collections;
using System.Collections.Generic;public class SSActionManager : MonoBehaviour
{public Judge jd;public void icharacterIsClicked(CharacterModel characterCtrl,BoatModel boat,CoastModel to_Coast,CoastModel from_Coast, UserGUI userGUI){if (characterCtrl.isOnBoat()){CoastModel whichCoast;// -1to、1fromif (boat.get_to_from() == -1){whichCoast = to_Coast;}else{whichCoast = from_Coast;}boat.GetOffBoat(characterCtrl.getName());characterCtrl.moveToPosition(whichCoast.getEmptyPosition());characterCtrl.getOnCoast(whichCoast);whichCoast.getOnCoast(characterCtrl);}else//Character在岸上{CoastModel whichCoast = characterCtrl.getCoastController();//船是满的if (boat.getEmptyNum() == -1){return;}//船和目标岸位置不同if (whichCoast.get_to_or_from() != boat.get_to_from())return;whichCoast.getOffCoast(characterCtrl.getName());characterCtrl.moveToPosition(boat.getEmptyPosition());characterCtrl.getOnBoat(boat);boat.GetOnBoat(characterCtrl);}userGUI.status = jd.icheck_game_status(boat,to_Coast, from_Coast);}}

另外新增的裁判类Judge判断游戏的状态:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Judge : MonoBehaviour
{public int icheck_game_status(BoatModel boat, CoastModel to_Coast, CoastModel from_Coast){int from_priest = 0;int from_devil = 0;int to_priest = 0;int to_devil = 0;int[] fromCount = from_Coast.getCharacterNum();from_priest += fromCount[0];from_devil += fromCount[1];int[] toCount = to_Coast.getCharacterNum();to_priest += toCount[0];to_devil += toCount[1];//胜利if (to_priest + to_devil == 6)return 2;int[] boatCount = boat.getCharacterNum();//游戏继续//船在对岸if (boat.get_to_from() == -1){to_priest += boatCount[0];to_devil += boatCount[1];}//船在初始岸else{from_priest += boatCount[0];from_devil += boatCount[1];}//失败if (from_priest < from_devil && from_priest > 0){return 1;}if (to_priest < to_devil && to_priest > 0){return 1;}return 0;}}

运行结果为:传送门
代码仓库:传送门

Unity3d HW4-动作分离版牧师与魔鬼相关推荐

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

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

  2. Unity3D项目四:牧师与魔鬼(动作分离版)

    Unity3D项目四:牧师与魔鬼(动作分离版) 基本介绍 动作管理是游戏的重要内容,全部都放在游戏对象里显得十分笨重,所以本次项目需要将动作从对象中提取出来写成单独的动作控制器.动作控制器来管理控制所 ...

  3. 用Unity3D实现简单的牧师与魔鬼游戏(动作分离版)

    用Unity3D实现简单的牧师与魔鬼游戏(动作分离版) 项目地址 牧师与魔鬼游戏(动作分离版) 完成效果图 上次博客链接 牧师与魔鬼游戏 实现心得 这次作业是在上次作业的基础上完成的,具体做出的改变是 ...

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

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

  5. Unity3D游戏编程-牧师与恶魔 动作分离版

    Unity3D游戏编程-牧师与恶魔 动作分离版 文章目录 Unity3D游戏编程-牧师与恶魔 动作分离版 作业要求 项目配置 项目演示 视频演示 项目下载 文字说明 项目截图 实现过程和方法(算法) ...

  6. 牧师与魔鬼——动作分离版

    牧师与魔鬼--动作分离版 在上周的作业中,牧师与魔鬼游戏中的各个事件,都是写在Director中,并且都是继承Monobehavior的.在这周动作分离的设计中,我将上船.下船以及船的移动都分离出来. ...

  7. Unity实战之牧师与魔鬼(动作分离版)

    Unity实战之牧师与魔鬼(动作分离版) 项目链接 整体描述 本次项目在第一版牧师与魔鬼的基础上,将动作从场记中分离出来,并设计一个裁判类实时监测游戏进行的情况.这样改进的优点有很多: 降低了不同功能 ...

  8. Unity牧师与魔鬼小游戏(动作分离版)

    Unity牧师与魔鬼小游戏(动作分离版) 前言 这是中大计算机学院3D游戏编程课的一次作业,在这里分享一下设计思路. 主要代码上传到了gitee上,请按照后文的操作运行. 项目地址:https://g ...

  9. unity编程实践-牧师与魔鬼动作分离版

    作业要求 牧师与魔鬼 动作分离版 [2019开始的新要求]:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束 目标:建立动作管理器,使动作抽象出来,可以应用到任何游戏对象上,以此提高代码复 ...

最新文章

  1. mysql 5.7笔记_关于MySql 5.7.29免安装版本的一个笔记
  2. OpenSuse Linux 的单用户模式
  3. 神策 FM:做一名数据分析师是什么体验?
  4. grenndao 插入表数据报错
  5. CF741C Arpa’s overnight party and Mehrdad’s si
  6. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...
  7. Python之eval函数实例解释
  8. 华为P30系列新配色官宣:9月6日IFA2019上见!
  9. python实现一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如, 6的因子为 1、2、3,而 6=1+2+3,因此 6 是完数。编程找出1000之内的所有完数
  10. 基于python、jupyter-notebook 的金融领域用户交易行为分析
  11. 用友t3 服务器通讯协议,远程登陆用友t3服务器
  12. Python数据处理(一)
  13. Meta-Learning in Neural Networks: A Survey元学习最新综述(翻译)
  14. xshell绿色版安装,无限制
  15. 阿里云code的git
  16. 得力如何用计算机算行列式,行列式的计算方法(课堂讲解版).docx
  17. Unity3D-设置地形
  18. 卡在返回驾驶舱–孤岛危机
  19. 【每日早报】2019/0604
  20. android 读取wps_Android 实现 调用 WPS Office手机版接口

热门文章

  1. mysql日志文件开启及详解:General_log 和 Binlog
  2. 给ERP项目管理团队的八点建议
  3. CSS固定定位与粘性定位4大企业级案例
  4. 你是如何确保自己 Mac 安全?
  5. 数据库实验一 数据库定义及数据导入
  6. 谓送人玫瑰,手有余香
  7. 基于MacOSX平台下的二维码扫码功能
  8. 在uniapp上使用不了FormData对象的问题解决
  9. 问道手游服务器维护集市时间,问道手游11月2日维护更新公告
  10. 解决WPS Office Expansion tool弹出问题