Unity2d Rubys Adventure 课程设计报告

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

目录

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 调试模式

>>点此查看

游戏脚本实现(合集)

>>点击此处浏览

游戏功能流程图

游戏逻辑设定

>>点击此处查看详情

游戏测试与功能展示

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

学习总结

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

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

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

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

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

下载

课设 Win版

课设 安卓版

课设 Mac版

猜你喜欢

转载自blog.csdn.net/weixin_43673589/article/details/106577768