征服Unity3dUnity技术分享unity3D技术分享

Unity官方教程 2D UFO(上)

2017-12-09  本文已影响517人  小巷里有只猫
2D UFO 游戏.gif

前言

Unity官方教程 2D UFO 原版视频教程地址,点我点我

抱着总结和方便回顾的念头把Unity官方教程写一遍。朋友—Zui,两年前写的球球和飞机非常精彩,我乃是继承他的“遗风”(→_→)。

这个2D UFO游戏个人认为是Roll-a-Ball的2D版,实现起来更加简单,更适合新手入门。官方视频未知所用Unity版本,现在Unity最新的版本是Unity 2017,部分界面和实现方式已经有差异。

电脑环境:Windows10
Unity版本:2017.2.0
脚本/代码编辑器:Microsoft Visual Studio Community 2017 15.4.4 (装Unity的时候带上的)

你将学会操作什么?

一、创建一个新的项目(New Project)

第1步:通过菜单栏File-->New Project打开创建新项目对话框

第一次安装unity的同学打开软件的时候默认就是创建新项目对话框页面。

New Project

第2步:确定项目名称、存放路径和游戏模式

创建新项目对话框

第3步:调整项目视图布局

编辑器主界面

有可能你创建出来的项目视图布局和上图不一样,可以编辑右上角Layout按钮来改变布局。上图布局是Tall(可以通过鼠标调整每个窗口宽度)。其他模式可以自行选择体验。

Layout

二、 从Asset Store下载素材资源包

为了方便我们跟随视频学习,Unity官方已经提供2D UFO游戏的所有素材供我们免费下载——Unity Asset Store。

第1步:通过菜单栏Window-->Asset Store按钮打开资源商店

image.png

第2步:查找和下载资源包

资源商店窗口默认会在Game窗口右侧展开,在Search搜索栏输入游戏名字并回车,找到游戏后点击标题打开详情页,点击蓝色按钮Download确认下载。

搜索结果

第3步:导入资源到本地打开的项目

下载完成后会提示是否Import到项目内,点击Import按钮会打开导入资源选择页面。默认全选,无需改动,点击右下角的Import按钮即可。

Import

导入完毕之后关闭Asset Store页面,回到编辑器主界面,可以看到Project窗口下的Assets文件夹多出了三个文件夹_Completed-Assets、Sprites、TutorialInfo。本教程中,除了Sprites,其他没有用武之地٩(๑❛ᴗ❛๑)۶。

Assets

三、创建第一个游戏场景(Scene)

第1步:创建一个文件夹存放场景文件

Unity中,游戏场景、脚本、预制件、美术等所有资源文件都放在Assets文件夹下。游戏越复杂文件可能就越多,如果不对这些资源文件合理进行分类的话,那么查找和管理起来就非常困难。所以在学习Unity的过程中要有意识地培养自己合理分类资源文件的习惯,这点不要忘记!那现在就开始创建一个Scenes文件夹来存放游戏场景文件吧~

创建办法有3种:

  1. 菜单栏Assets-->Create-->Folder
  2. Project窗口下的Assets文件夹右键快捷方式创建
  3. 左键选中Project窗口下的Assets文件夹,点击Project正下方Create右侧小三角,选择Folder。
Create Folder

第2步:保存场景文件到Scenes文件夹

通过菜单栏File-->Save Scenes(快捷键Ctrl+S)保存场景文件,记得是保存在Scenes文件夹,我们命名主场景文件为Main

保存场景

可以看到,Hierarchy窗口下出现了Main场景。

Main

四、添加游戏对象——背景(Background)

有了游戏场景,我们就可以开始在场景中添加一些我们需要的游戏对象了。首当其冲需要添加的是游戏背景,也就是UFO背后那张棋盘。选中Sprites文件夹,鼠标左键按住Background文件不动,拖到Hierarchy窗口空白处松开。

Background

可以看到,Hierarchy窗口下新增了一个Background游戏对象。新增游戏对象之后最好进行重命名(更好地说明它的作用),重命名有2个方法:

重命名

接下来要做一件很重要的操作(官方和Zui强力推荐)——重置(reset)游戏对象的Transform属性:在右侧的Inspector中找到组件Transform,点击它右上角的小齿轮,选择reset选项,如下图:

reset transform

官方建议我们每次新增GameObject之后都进行双标动作:改名和重置Transform。改名是方便解释对象的作用,重置是让游戏对象的位置回到原点,避免因为不在原点产生一些诡异的事情。

背景添加成功之后,可以看到Scene窗口的背景不完全可见,鼠标滚轮控制缩放,鼠标左键拖动,调整到Scene窗口可以看到完整的背景,方便后续操作。

鼠标切到Game窗口,背景图片看起来还是很大,无法窥得全貌,这是由于正交摄像机的Size太小,可视范围太少。鼠标选中Main Camera游戏对象,在Inspector内的组件Camera找到Size,把它的数值改成28(可以根据自己的窗口大小来调整这个数值)。

Game窗口

Tips:鼠标放在Size输入框前面一点,出现左右两个箭头的时候,按住鼠标左键上下移动可以微调数值。其他有输入项的都可以使用这个操作~

五、添加主角——UFO

前面都是浮云,到现在为止我们的游戏主角终于要登场了,泪流满面(;へ:)……添加UFO和Background的操作是一样的,在Sprites文件夹里面把UFO拖到Hierarchy窗口即可。添加完GameObject不要忘记双标动作了,这次我们把UFO重命名为Player,因为它就是我们玩家所能操控的对象。

Player
这个主角有点太胖了,格子都装不下了,让我们给它减减肥。选中Player,把TransformScale内的x和y都改成0.75(2D游戏不用改z)。看,格子这么合身!

Transform属性说明:Position位置,Rotation旋转角度,Scale缩放比例。

在Player的Inspector窗口下有一个组件Sprite Renderer,有一个选项Sorting Layer,它控制渲染层级的顺序。在这里我们需要把UFO也就是player的这一项改成Player,然后把Background的改成Background。很绕→_→ 这个改了之后,背景就不会盖在上面挡住UFO了~

image.png

六、让UFO走起——添加刚体(Rigidbody2D)和脚本(script)

UFO死气沉沉地一动也不动,我们总不能干瞪着眼看它,这样不叫游戏。那么接下来就该让它走起来了~它不会无缘无故地走起来,需要我们去给它施加一个物理作用力,控制它往我们指定的方向走。这就涉及到物理引擎的控制了,具体我们接下来看怎么实现吧。

第1步:给UFO添加刚体组件

刚体能让UFO被物理引擎所控制,这样便能模拟现实,通过受到物理作用力来实现真实的物理表现效果比如移动和碰撞,方便后续实现拾取金币和撞墙。

给UFO添加刚体组件的2种方法:

Add Component

第2步:给UFO添加脚本组件

OK,现在UFO有刚体了,它可以接受物理作用力了,那么如何给它发出指令让它走起来?通过给UFO添加脚本并且编辑脚本可以实现对它的操作。

不过,首先我们要意识到,脚本也是资源文件,所以是需要存放在Assets文件夹里面的。还记得之前提过的资源分类吗?在Assets下创建一个Scripts文件夹,用来存放所有的脚本文件。

Scripts文件夹

给GameObject添加脚本的方法是选中GameObject(也就是我们的主角Player),点击Inspector窗口的Add Component按钮,在弹出来的菜单中选择New Script

New Script

此时要求输入脚本名称和选择语言类型,这里我们将脚本命名为PlayerController,然后语言选择C Sharp。

PlayerController

点击Create and Add后,我们就成功给UFO添加一个脚本组件了。接下来你们肯定以为要编辑脚本了对不对?NO,NO,NO(贱笑.jpg)。点击Assets文件夹,可以看到文件夹内出现了一个名为PlayerController的脚本文件。由此我们知道,每次给游戏对象新增的脚本文件默认是放在Assets文件夹。根据资源分类原则,要先记得把这个脚本文件拖到刚才创建的Scripts文件夹内。

然后通过双击这个脚本文件,或者点击脚本组件右上角的小齿轮按钮,在弹出来的菜单中选择Edit Script便可打开脚本编辑器了。

Assets文件夹

第3步:编写脚本

下面没有编程经验的同学,可以直接按照例子来抄写代码,以后做的多了自然也就容易理解了。
新打开的脚本是这样的:

PlayerController

里面默认自带了2个方法,Start和Update,Update在这个例子里用不到。我们添加一个FixedUpdate的方法,该方法主要适用于处理物理逻辑,代码如下:

PlayerController代码

简单说明下:

Tips:脚本新增的Public变量成员,会在Unity编辑器中脚本组件内显示并且可以修改赋值,比如此例中的speed

speed

OK,现在回到Unity,把Speed改成10,然后运行游戏,激动人心的时刻要到了!

最左运行游戏,变成蓝色就代表好了

咦?为什么UFO在做自由落体运动?尴尬ヾ(。ꏿ﹏ꏿ)ノ゙......前面提到,刚体能让UFO处于物理引擎控制之下,所以添加了刚体的UFO是可以受到物理作用力包括重力的!那怎么样让它不受重力影响呢?把Rigidbody2D组件的Gravity Scale项的数值改成0就可以了。

Gravity Scale

现在再运行游戏,UFO不会再自由落体了。按WASD或者方向键试试,可以看到UFO走起来的效果了。修改Speed的值可以改变速度哦。

传送门:Unity官方教程 2D UFO(下)


【扩展补充】

好的习惯:
Q&A:

Q1:Game窗口里面棋盘外面区域是一片蓝色,怎么修改成自己想要的颜色?
A1:选择Hierarchy窗口内的Main Camera,在右侧Inspector的Camera组件内修改Background背景色即可。同学可以把RGB设置成75 75 75,灰色调和Scene窗口一致。

Q2:在脚本里面,Update()和FixedUpdate()有什么不同?为什么在这里我们要使用FixedUpdate()?
A2:Update() 和 FixedUpdate()在游戏中的作用是都会在更新的时候自动循环调用。他们的区别主要就是

Q3:那Start()是什么鬼?
A3:游戏初始化的时候调用Start方法,后续不会再调用。而Update之类的都是反复根据他们的规则在调用执行~

上一篇 下一篇

猜你喜欢

热点阅读