基于Unity3D的冒险小游戏设计与实现

博主主页:电子科技大神
博主简介:专注电子技术领域和Unity3D毕业设计项目实战,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计(单片机项目,plc,仿真,Unity3D等)、简历模板、学习资料、技术咨询。

文章目录

  • 一、摘要
  • 二、绪论
  • 二、系统分析
    • 4.1 游戏总体设计思路
    • 4.2 游戏规则设计
    • 4.3 设计步骤
  • 三、效果图
    • 5.1 地图场景设计
    • 5.1.1 背景设计
    • 5.1.2 地形设计
  • 总结
    • 目 录



一、摘要

  摘要:Unity3d是近些年来非常热门的游戏开发软件,凭借着跨平台开发能力强的特点,不论是PC端还是移动端又或是游戏主机端,都受到许多开发者的喜爱,就目前来说,Unity3d是许多中小型游戏公司的首选开发工具。
本文主要以Unity3d for mac 2019版本为开发环境,设计并开发一款单机版的冒险小游戏,按照最初的游戏开发思路,从介绍unity3d以及需要使用的相关软件开始,逐步再由游戏设计,游戏实现到游戏软件测试等一步一步展开,这其中包括游戏素材的引用和制作,游戏后期的设计和代码实现等。本次主要采用2d平面的设计风格,采用多图层实现2.5d的视觉效果.
关键词:游戏设计,Unity3d ,冒险小游戏

二、绪论

  基于Unity3D以及Visual Studio在Mac平台上设计并实现一个像素风格类的冒险游戏,游戏玩家可以通过控制方向键以及空格键实现对人物的控制,还能用特殊方法消灭怪物,收集一定的物品完成逃跑任务。虽然像素游戏大同小异,但是结合起校园背景且精心设计游戏体验和显示效果,不仅具有很强的可玩性和纪念意义,还可以加深对游戏引擎的了解以及游戏开发的一般制作过程和发布过程。希望以此游戏,为我的大学生涯画上一个完美的句号。

二、系统分析

4.1 游戏总体设计思路

  游戏类型属于平台跳跃冒险类游戏,拥有主要角色,敌人,陷阱,道具等元素。游戏由两大主体组成,分别是场景元素以及菜单功能。游戏主体思路如图4.1
基于Unity3D的冒险小游戏设计与实现_第1张图片

图4-1 游戏主体思路
  游戏实现效果:玩家从主菜单进入游戏即可操控角色探险,可以实现躲避怪物,陷阱或是击杀怪物,利用陷阱,遇到难以通过的地方可以借助游戏道具或者其他物品帮助玩家解决难题,如果受到伤害则血量槽会得到反馈,如果血槽为0则游戏失败,弹出死亡菜单选择是否继续进行游戏或退出游戏。

4.2 游戏规则设计

胜利条件;玩家操控主角在环境中自由探险,使用各种办法接触危机并且最终抵达目标地点。
死亡条件;角色左上角血量槽消耗殆尽,或触碰秒杀机关;
击杀敌人:使用特殊地形击杀,或者操控角色通过跳跃踩踏以击杀敌人;
难易度:游戏从开始至后面难度逐渐上升,有相关告示牌给予一定提示;
道具,陷阱:获得解决谜题的道具,补充血量的物品;
位置重置:如果因为操作失误或者不慎掉出地图外,一定时间后会重新回到地面。

4.3 设计步骤

1.编辑地图地形,搭建地图场景
2.创建人物角色,为角色添加动画以及基础移动脚本
3.创建敌人,添加动画以及自动寻路脚本
4.为人物角色添加镜头,为游戏内一些元素添加声效
5.设置场景互动,增添可玩性
6.编辑UI界面
7.游戏系统测试

三、效果图

5.1 地图场景设计

5.1.1 背景设计

首先需要在Hierarchy视图中创建新的游戏对象,我把它命名为Background,随后在素材文件夹中把背景图文件拉到Hierarchy中,并将背景图放入Background中,这样所有的背景图都属于Background的子对象,如果想要进行背景修改,可以直接从父对象Background进行操作。图5-1背景。Background为父对象,其下的back为子对象。
基于Unity3D的冒险小游戏设计与实现_第2张图片

图5-1 游戏背景
第二步,为了让背景图更具有立体效果,可以尝试让背景图跟着的角色移动而一起移动,这样可以考虑给Background对象添加一个代码脚本。在Background的Inspector上添加Scripts组件,或者在文件加点击右键,创建新的Script文件,我将这个文件命名为Parallax,意思是视觉差,创建成功后拖拽到Background对象的组件中。 图5-2 Parallax.cs文件
基于Unity3D的冒险小游戏设计与实现_第3张图片

图 5-2 Parallax.cs 文件
打开已经创建好的Parallax文件,初始化需要用到的参数。这里我需要用到的参数有,背景移动的速度,当前x和y的坐标值,以及跟随的镜头。我选择创建将摄像机和移动速度设置为公共类,这样可以方便我们在组件中直接调整数据而不需要进入脚本代码调整。参数初始化如下,
public Transform Cam;
public float moveRate;
private float startPointX,startPointY;
public bool lockY; //false 是否锁定y轴
这里需要初始化一个Transform类的参数Cam,用来选择所需要跟随的镜头,一个float类的moveRate用来调整背景移动速度以及两个float类获取当前x,y点坐标的参数,最后补上Y轴上是否滚动的判断参数,为bool类型。
由于x,y点坐标是随机变化的,所以需要在游戏一开始的时候就自动获取当前坐标,获取当前x,y坐标。
基于Unity3D的冒险小游戏设计与实现_第4张图片

获取完当前坐标后,考虑游戏坐标会随着主角移动而跟着改变,因此需要每一帧都需要更新,这里需要用到new 一个Vector2来更新坐标。

  void Update()
    {
        if (lockY)
        {
            transform.position = new Vector2(startPointX + Cam.position.x * moveRate, transform.position.y);
        }
        else
        {
            transform.position = new Vector2(startPointX + Cam.position.x * moveRate, startPointY + Cam.position.y * moveRate);
        }
    }

因为坐标是动态改变的,所以需要将执行代码写在update里。transform.positon意思是该游戏对象的坐标,new Vector2是重新定义二维坐标的意思,这里写了if语句,判断是否锁定Y轴,如果锁定了Y轴,则改变x轴的坐标而锁定y轴,若Y轴没锁定,则y轴可以改变。
基于Unity3D的冒险小游戏设计与实现_第5张图片

图5-3 Parallax(Script)
图5-3为Inspectir中所显示的脚本组件,此时拖拽所需要的摄像机Main Camera到Cam上,移动速率调整为0.5,锁定Y轴,因为游戏属于横版动作类,Y轴的滚动没有太多的要求。

5.1.2 地形设计

在Unity中,制作2D地图场景常用的功能是Tilemap。Tilemap也可以称之为瓦片地图,将制作好的地图素材放入Tilemap中,然后通过其自带的画板功能,把自己想做的地图场景绘制出来。
制作地图之前,我需要在Hierarchy上创建关于地图的游戏对象,点击右键创建2D Object,然后选择Tilemap,这样Hierarchy就会出现名字为Grid的游戏对象,里面有个子对象Tilemap,之后,在Tile Palette视图中点击Create New Palette,然后选择已经制作好的地图素材,需要注意的是,为了让地图和背景更加匹配,添加素材前需要把素材的Pixels Per Unit(每单元的像素)调成合适的大小,这里我调整为16。

基于Unity3D的冒险小游戏设计与实现_第6张图片

添加完后的Tile Palette如图5-5,红色框标记的地方为Tilemap绘制工具,正常情况下可以自由移动和放大缩小,如果点击Tilemap后,它会自动跳到画笔功能,比如,我在Tile Palette中选择map2,点击若干个像素格的内容,并在Scene视图中进行绘画,作出比较满意的地图效果。图5-6 为全地图一部分。
基于Unity3D的冒险小游戏设计与实现_第7张图片

图5-6 地形场景
制作好Tilemap后,可以给地形以外的地方添加各种装饰背景,使地图更加丰富,看起来更加立体。图5-7为添加好装饰素材后的效果。
基于Unity3D的冒险小游戏设计与实现_第8张图片

图5-7 添加好素材的地图场景

总结

   本次Unity游戏的开发虽然属于轻量级的项目,但是项目中包含了许多组件和脚本代码的使用,这其中包括了各种模拟物理实现的组件,摄影机的镜头设置,UI界面布局,帧动画设定及各场景布置。通过这次项目让我学习到了很多在学校没接触过的知识,因为游戏软件涉及许多知识层面,包括美术,策划,脚本设定等等。从最基础的背景图片放置到各脚本控制游戏对象再到UI界面,什么地方需要使用关键组件,什么地方需要使用特殊代码,哪些地方需要逻辑上的正确,我都在unity中从零开始,也在项目制作的过程中,慢慢看到自己制作的游戏软件从无到有,感受到满满的成就感。

目 录

目 录

1 绪 论 1
1.1 引言 1
1.2 研究背景和意义 1
1.2.1 基于Unity3d的冒险小游戏设计与实现的背景分析 1
1.2.2 课题的研究意义 2
1.3 研究的方法和内容 2
1.3.1 研究方法 2
1.3.2 研究内容 3
2 开发工具简介 4
2.1 Aseprite绘画软件 4
2.2 Unity3d for mac 5
2.3编程语言 9
3 游戏关键组件简介 10
3.1 Transform 10
3.2 Rigidbody 2D 10
3.3 Collider 2D 11
3.3.1 Box Collider 2D 11
3.3.2 Circle Collider 2D 12
3.3.3 Polygon Collider 2D 12
3.3.4 Tilemap Collider 2D 13
3.4 Camera & Audio 13
3.5 Script 15
4 游戏总体设计 17
4.1 游戏总体设计思路 17
4.2 游戏规则设计 17
4.3 设计步骤 18
5 游戏内容实现 19
5.1 地图场景设计 19
5.1.1 背景设计 19
5.1.2 地形设计 21
5.1.3 地形碰撞体 23
5.2 人物角色与敌人 24
5.2.1 人物创建与基础移动 24
5.2.2 跳跃和下蹲 25
5.2.3 敌人AI 27
5.2.4 动画效果的添加 28
5.3 摄影机&声效添加 30
5.3.1 摄影机 30
5.3.2 声效 32
5.4 场景互动 32
5.5 UI界面 33
5.5.1提示牌 33
5.5.2血条 34
5.5.3菜单 35
6 游戏系统测试 37
6.1 测试环境 37
6.2 游戏运行测试 37
7 结束语 43
参考文献: 44
致谢 45

你可能感兴趣的:(毕业设计,Unity3D,unity,游戏)