本篇文章旨在从玩家视角介绍一个游戏的开发过程

目录

1游戏介绍

2游戏场景设计(游戏概况)

2.1.0菜单界面

2.1.1切换操作方式

2.2.0关卡1

2.2.1 游戏UI界面

2.3.0关卡2

3  游戏功能设定(游戏细节)

3.1.0 任务开始横幅

3.1.1 与NPC长者对话

3.1.2 自动提示对话框

3.1.3 游戏的道具与道具的自动掉落

3.1.4 游戏的背景音乐与音效

3.1.5 游戏状态的判定(任务完成/任务失败)

3.1.6 第一关的机器人(定时切换脚本)

3.1.7 游戏进入下一关

3.1.8 第二关的机器人(被攻击后切换脚本)

3.1.9 游戏地图与游戏主角的创建

3.2.0 游戏小怪的创建

3.2.1 子弹的发射

3.2.2 人物动画的添加

3.2.3 机器人冒烟的特效

3.2.4 游戏时长的显示与记录

3.2.5 游戏的操作方式

3.2.6 选择界面(彩蛋)

3.2.7 通过tag查询场景中剩余子弹袋

3.2.8 游戏失败时重新开始键高亮

3.2.9 解决了点击按钮造成的不必要移动

3.3.0 调试模式

4 游戏脚本实现(合集)

5 游戏功能流程图

6 游戏逻辑设定

7 游戏测试与功能展示

8 学习总结

1游戏介绍

Ruby是一个冒险家。一天,她意外地来到了一个奇妙的世界。

在这个世界里,她需要通过多重考验,完成青蛙长者的任务,修复损坏的机器人。

2游戏场景设计(游戏概况)

2.1.0菜单界面

有三个选项:

开始、关于、切换操控方式

2.1.1切换操作方式

本游戏有两种操作方式,三种操作方案,在菜单界面选择:鼠标+键盘、鼠标、键盘

>>操作方式的选择

2.2.0关卡1

2.2.1 游戏UI界面

左上角:

创建对象篇:血条的图像类型设置为填充

脚本实现篇:血条、游戏计时、子弹数、敌人数

右上角:

帮助、重新开始游戏、音乐:开/关、退出游戏

>>不同关卡下重新开始游戏的实现

左下角:

返回菜单

右下角:

背景音量调节

要击杀两个机器人才能通关

本关卡的机器人有两种状态

来回巡游,追踪,每10秒自动切换一次状态

2.3.0关卡2

要击杀3个机器人才能通关

本关卡的机器人亦是两种状态

第一次被击中后,高速追杀玩家

3 游戏功能设定(游戏细节)

3.1.0 任务开始横幅

>>点此查看细节

3.1.1 与NPC长者对话

>>点此查看详情

3.1.2 自动提示对话框

>>在场景中创建一个绑定在角色身上的对话框

>>提示对话框的智能化显示

3.1.3 游戏的道具与道具的自动掉落

两个核心道具对应着生命值与子弹数

>>回血道具的实现

>>子弹袋的实现

击败敌人奖励,自动掉落物件,灵感来自合金弹头

>>击败敌人随机掉落物件(比例1:2)

3.1.4 游戏的背景音乐与音效

>>点击此处查看

分析

游戏开发所需音频文件

添加背景音乐

新建空对象

增加Audio Source组件

指定音频文件

循环播放、唤醒播放

添加音频播放脚本

给机器人加脚步声

设为3D空间混合

设置曲线

移除摄像机的监听器

在玩家上加一个监听器

背景音乐

音效随距离的衰减

3.1.5 游戏状态的判定(任务完成/任务失败)

>>点击此处查看

分析

任务完成条件:击杀n个敌人,n由关卡设定

游戏结束条件:没血

任务完成的判断依据:击杀目标数

任务完成的标志:方便其他函数和脚本调用

游戏结束代码

任务完成代码

详细代码

3.1.6 第一关的机器人(定时切换脚本)

第一关的机器人有两种运行状态:来回巡游,追踪

每10秒自动切换一次状态

核心思想

机器人上挂载两个脚本,一个是AI脚本,一个是机器人自动巡游控制脚本

用一个空对象挂载一个管理脚本,定时切换两个运动控制脚本的激活状态

>>定时切换脚本(管理脚本)

>>来回巡游脚本(机器人自动巡游控制脚本)

>>自动追踪脚本(AI脚本)

3.1.7 游戏进入下一关

>>点击此处查看

空对象添加碰撞盒,挂载脚本

3.1.8 第二关的机器人(被攻击后切换脚本)

第一关的机器人有两种运行状态:来回巡游,追踪

初始一直处于来回巡游状态,直到第一次被攻击

立刻切换到自动追踪状态

跑得飞快,一不小心就GameOver了

核心思想

机器人被子弹攻击后,打开AI脚本,关闭机器人自动巡游控制脚本

>>机器人被攻击后切换脚本激活状态的实现

>>来回巡游脚本(机器人自动巡游控制脚本)

>>自动追踪脚本(AI脚本)

3.1.9 游戏地图与游戏主角的创建

步骤

资源包下载

创建地图

地面素材切割成块,铺路

创建调色板

铺路

小池子的构造

把树添加到场景中

为树添加碰撞体

场景构造效果

游戏角色导入

添加刚体和碰撞体

勾选冻结旋转

创建PlayerControl.cs

用刚体移动可以消除画面抖动

摄像机跟随

摄像机跟随范围调整

设置遮挡效果

设置不可通行的区域

对碰撞区域进行优化

消除蓝色的边界外视野,将视野局限于地图内

游戏动画的实现

建立一个动画状态集

3.2.0 游戏小怪的创建

步骤

创建一个机器人对象

为机器人建立动画

Right是由Left翻转得到的

逐一修改帧数

创建一个新混合树

添加上下左右四个运动

添加参数

创建机器人控制脚本

冻结旋转

创建预制体

创建雷区

3.2.1 子弹的发射

步骤

选择齿轮图片

设置单位像素数

给齿轮添加刚体

设置重力大小为0

冻结旋转

添加2D碰撞盒

子弹挂载脚本

制作成预制体

设定玩家层和子弹层

项目设置:不允许子弹层与子弹层、子弹层与玩家层发生碰撞

玩家调用脚本

3.2.2 人物动画的添加

在之前的基础上新增两个动作

改变后的动画状态集

部分参数

3.2.3 机器人冒烟的特效

>>点击此处查看详情

3.2.4 游戏时长的显示与记录

>>点击此处查看详情

UI管理脚本从玩家脚本接收其获取的游戏时长totalTime(单位:秒)

将这个数值以00:00的格式显示出来

min : sec

求min:totalTime /60

求sec:totalTime %60

min格式处理:不足10的补0

sec格式处理:不足10的补0

3.2.5 游戏的操作方式

键盘操作:

WSAD上下左右

E 与长者对话

J 攻击

>>键盘操作的实现

鼠标操作:

左键 移动

右键 攻击

左键导航功能

玩家上只需要挂载一个脚本,无需任何插件,即可实现点哪走哪。

为了人物动画的正常显示,还需要获取人物移动的方向向量,传给动画状态集。

>>鼠标操作的实现

玩家脚本加入鼠标的瞄准和攻击功能

通过在玩家脚本上实现鼠标的瞄准和攻击功能。

获取鼠标点击处到玩家的方向向量,按照这个向量把子弹发射出去

>>点此查看玩家脚本PlayerControl

3.2.6 选择界面(彩蛋)

第二关、进入城堡即可触发

3.2.7 通过tag查询场景中剩余子弹袋

>>点击此处查看

3.2.8 游戏失败时重新开始键高亮

>>查看详情

3.2.9 解决了点击按钮造成的不必要移动

>>点此查看

3.3.0 调试模式

>>点此查看

4 游戏脚本实现(合集)

>>点击此处浏览

5 游戏功能流程图

6 游戏逻辑设定

>>点击此处查看详情

7 游戏测试与功能展示

>>点击此处查看演示视频

8 学习总结

本游戏是一款基于Unity的2D闯关系统,利用C#语言进行相关脚本的开发,实现交互功能,具有一定的可玩性和游戏体验。

玩家的目标是击杀所有机器人,为了让机器人的动作更加逼真,为机器人写了两个脚本,一是自动巡游脚本,二是自动追逐脚本。不仅如此,还为机器人添加了血量,第一次攻击被激怒,第二次才被消灭。玩家通过按下键盘WSAD键来实现虚拟角色的前后左右移动,E键与NPC对话,J键攻击。此外,还开发了鼠标操作的方案,按住鼠标左键亦可以进行移动,且更为便捷,按住鼠标右键可以瞄准并发射子弹,操作更为容易。玩家可以在菜单界面选择操作方式。

用户交互界面有很多个按钮,基本实现了当下流行游戏的常见功能,如帮助、重启、退出、菜单、静音、音量调节等。功能围绕着击杀敌人这一核心玩法来展开,为了便于新手操作,增设了新手帮助功能。玩家处于无子弹的状态、玩家死亡、玩家完成任务前往下一关、玩家操作不当、玩家通关,均会给出对应的提示。除此之外,还加入了AI技术,机器人通过AI脚本和自动寻路插件,可以实现对人的主动攻击,可玩性大大提高。

由于时间紧促,本游戏还存在着许多不足。首先,场景的布置没有十分恰当,应该明确出一条闯关的路线,玩家不击杀敌人,就无法继续前进。其次,场景设计上也有待完善,场景的元素不算太丰富,这次只用了一个Ruby的资源包。我本来打算再增加三个功能:一、敌人的随机运动,二、通关自动导航到城堡入口,三、获取道具,加快移动速度。但由于时间的原因,不能在课设上完成了。

近年来,游戏成为人们生活中不可缺少的娱乐活动,存在着广阔的前景。学好游戏开发,对于数字媒体技术专业的学生来说,是十分必要的。这次课程设计不仅使我学会了游戏开发的知识,也让我感受到了游戏开发的乐趣,希望未来可以开发更多好玩、有趣的游戏。

下载

课设 Win版

课设 安卓版

课设 Mac版

Unity2d Rubys Adventure 课程设计报告相关推荐

  1. java课设推荐,《Java程序设计》课程设计报告推荐.docx

    <Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...

  2. 嵌入式linux设计报告,嵌入式linux课程设计报告

    嵌入式linux课程设计报告 重庆科技学院 课程设计成果 院(系):_电气与信息工程学院_ 班 级: 计科普0802 学生姓名: 庄桐泉 学 号: 2008441067 设计地点(单位)___ _I3 ...

  3. matlab车牌识别课程设计,matlab车牌识别课程设计报告模板(附源代码).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab matlab车牌识别课程设计报告模板(附源代码). ...

  4. 天津大学计算机课程设计挂,《天津大学_智能装置课程设计报告》.doc

    智能装置课程设计报告 一.设计题目 空调控制系统 二.设计目的 1. 深入了解PIC16F877单片机的工作原理,熟练掌握汇编语言程序设计方法,熟练使用MPLAB-ICD仿真器及MPLAB-IDE仿真 ...

  5. android应用课程设计报告,基于Android的多媒体播放器课程设计报告.doc

    基于Android的多媒体播放器课程设计报告.doc 基于Android的多媒体播放器课程设计报告2014-01-02 224652 转载标签 android多媒体播放器嵌入式课程设计报告it分类 我 ...

  6. 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc

    android音乐播放器课程设计报告 android音乐播放器课程设计报告 基于Android音乐播放器的设计与实现 滨江学院 <移动通信程序设计> 课程设计 题 目 院 系 专 业学生姓 ...

  7. 成都理工大学计算机报告,[2017年整理]成都理工大学通信工程计算机网络综合课程设计报告.doc...

    [2017年整理]成都理工大学通信工程计算机网络综合课程设计报告 计算机网络综合实习 课程设计(论文) 设计(论文)题目 计算机网络综合设计 学院名称 信息科学与技术学院 专业名称 通信工程 学生姓名 ...

  8. 十字交叉链表c语言,C语言课程设计报告—十字交叉链表的应用.doc

    C语言课程设计报告-十字交叉链表的应用 PAGE \* MERGEFORMAT 13 华中科技大学计算机科学与技术学院 C语言程序设计课程设计实验报告 题目:水产品养殖信息管理系统 专业: 计算机科学 ...

  9. 大二c语言数电课程设计,数电课程设计报告(数字钟的设计).doc

    数电课程设计报告(数字钟的设计).doc 数电课程设计报告 设计背景与要求 设计要求 系统概述 2.1设计思想与方案选择 2.2各功能块的组成 2.3工作原理 第三章 单元电路设计与分析 3.1各单元 ...

最新文章

  1. SpringBoot 那些天生自带 Buff 的工具类,你用过几个?
  2. Spring mvc集成log4j2
  3. 在线实时大数据平台Storm单机部署
  4. 消息队列面试 - 如何解决消息队列的延时以及过期失效问题?
  5. python调用simulink_[Python-MATLAB] 在Python中调用MATLAB的API
  6. 关于开源产业的5个真相
  7. QT4.7和VS2008 顺利安装必读 (最新版)
  8. centos6.5里用yum简单安装配置lamp
  9. 软件开发流程:需求评审流程
  10. xilinx_ug903阅读记录
  11. 计算机符号大写怎么退出,如何输入数字,字母 和 回车换行符,大写字母锁定输入模式怎么退出...
  12. cgi进程设置多少 宝塔_比宝塔面板还要强大的Linux服务器端管理面板——AppNode...
  13. 人工智能机器人的可操作性应用法则
  14. Google的这个logo设计为什么看着有点牵强呢?
  15. LP和MIP基础知识
  16. oracle 手机、身份证 打码 函数
  17. 记录一次Extmail 邮件服务器崩盘事件
  18. WebStorm 配置SVN 提交代码“Commit dialog:Local Changes ReFrech”卡死
  19. 云与海计算机谱,天谕手游云与海乐谱_云与海乐谱代码分享_3DM手游
  20. 网络领域知产保护难题简析

热门文章

  1. Cannot create resource output directory
  2. 通用人工智能+智能车舱,商汤绝影带来怎样一番景象?
  3. Android增量升级
  4. arcgis将矢量线转化成面,并计算面的面积
  5. 第十三届蓝桥杯省赛python(B组)赛后总结
  6. C语言局域网对战游戏,局域网聊天的程序(C++版)
  7. 常见电路分析十:万用表自动关机的原理
  8. 翻译www.djangobook.com之第四章:Django模板系统
  9. SQL SERVER 2012安装
  10. Sublime与Firefox(火狐)配置livereload插件实现动态实时刷新浏览器