【Unity入门计划】playground项目:2D飞船移动小游戏

目录

跟学的Unity教程

我的Unity版本

1 导入playground项目资源

2 创建新场景

3 创建玩家飞船

3.1 调整大小位置

3.2 调整Game视图的背景

3.3 Inspector -> 重命名&更改Tag

关于Unity的标签(Tag)

4 飞船移动

5 添加障碍物和碰撞

5.1 添加障碍物

5.2 添加碰撞->障碍物

添加ModifyHealth脚本组件

添加2D刚体组件

5.3 添加碰撞 -> 飞船

6 添加减血效果

6.1 添加用户交互界面

6.2 实现血量减少操作

7 添加背景图

7.1 调整图层顺序

8 添加预制件

9 添加星星以获得分数

9.1 加入星星

9.2 加入获取分数组件

10 分组便于管理


跟学的Unity教程

【unity2022入门】整合Unity官方教程设计最佳学习路线,Unity精讲入门系列,持续更新中...._哔哩哔哩_bilibili

我的Unity版本

2021.3.6f1c1

1 导入playground项目资源

进入assetstoreUnity Asset Store - The Best Assets for Game Making

搜索Unity playground保存,再从Unity导入Assert即可。

palyground项目是官方给新手推荐的入门视频,预设了一个封装过的开发环境,让我们很好的上手,来熟悉游戏概念和制作流程,比较好操作!

2 创建新场景

Assets -> Scene 右键-> Create -> Scene,新建一个场景。

点一下名称就可以重命名了,命名为PlaneAsteroid

【Unity入门计划】playground项目:2D飞船移动小游戏_第1张图片

双击这个Scene对象, 右侧的Hierarchy窗口就会显示出当前的场景对象。

【Unity入门计划】playground项目:2D飞船移动小游戏_第2张图片

引擎会默认同时创建:玩家摄像头Main Camera和方向光Directional Light两个对象。

3 创建玩家飞船

在这个“宇宙飞船”的小游戏中,玩家操作的是飞船,因此这个游戏的玩家对象就是飞船了!

我们就用已经导入的playground项目里的资源就行。

Assets -> Images -> Spaceships,选择喜欢的飞船,添加到场景中,添加到场景有两种方式:

  • 直接拖到Scene视图中,这个方法可以直接实现对象在Scene中的定位
  • 拖到Hierarchy窗口中,这个方法可以实现在加入的同时创建父子关系

【Unity入门计划】playground项目:2D飞船移动小游戏_第3张图片

3.1 调整大小位置

初始的飞船太大了,在Game视图中点击运行的话,会是这样

【Unity入门计划】playground项目:2D飞船移动小游戏_第4张图片

于是就要给它缩小一点, 退出运行状态  -> 选中SpaceshipRed对象 -> R键,实现缩放。

同时,如果想要精确的缩放,右侧Inspector窗口 -> Transform层级下的Scale,输入数值即可。

还可以打开Scale的锁定按钮,实现XYZ三向等比缩放,我这里选择的是缩放到0.2.

可以再在Game视图运行查看,大小就舒服一点了。 

【Unity入门计划】playground项目:2D飞船移动小游戏_第5张图片

3.2 调整Game视图的背景

教程里UP游戏视图的背景色跟我不太一样,我也想要调成纯色的,找了一下发现是在玩家摄像机Main Camera的Inspector中更改。

【Unity入门计划】playground项目:2D飞船移动小游戏_第6张图片

Main Camera -> Inspector -> Camera -> Clear Flags&Background,可以看到初始是用的天空盒,这里改成Solid Color并把颜色设置成黑色。 

【Unity入门计划】playground项目:2D飞船移动小游戏_第7张图片

 【Unity入门计划】playground项目:2D飞船移动小游戏_第8张图片

3.3 Inspector -> 重命名&更改Tag

 根据教程,在Inspector窗口更改飞船名字 -> ship,在Hierarchy窗口中名字也会自动同步了。

【Unity入门计划】playground项目:2D飞船移动小游戏_第9张图片

关于Unity的标签(Tag)

【Unity入门计划】playground项目:2D飞船移动小游戏_第10张图片

unity官方:标签 - Unity 手册

  • 在Unity里,Tag是分配给一个或多个游戏对象的参考词,起到标识、区分的作用;
  • 同一类的模型,可以设置成统一的标签;
  • 查找物体就可以按标签进行查找了;

其余的比如代码怎么写的,以后再说,这里先给我们的飞船物体给个Player的Tag。

4 飞船移动

直接用playground项目里写好的Move脚本就可以,点开可以在右侧的Inspector查看代码。

【Unity入门计划】playground项目:2D飞船移动小游戏_第11张图片

那么怎么把脚本赋给我们的飞船呢?有两种方式:

  • 外行的一种方式——把Move脚本拖拽到ship的Inspector窗口里;
  • 比较建议的方式——从ship的Inspcetor窗口的Add Component添加

 添加之后,可以看到属性里多了一个 Rigidbody 2D 和一个 Move With Arrows,对于2D刚体组件Rigidbody 2D我进行了初步的学习总结:Unity学习-2D刚体Rigidbody 2D

另一个Move With Arrows是编程创建的一个通过键盘控制游戏对象的一个组件。

【Unity入门计划】playground项目:2D飞船移动小游戏_第12张图片

5 添加障碍物和碰撞

5.1 添加障碍物

Assets -> Images -> Asteroids,选择小行星加入Scene中,并调整大小。​​​​​​

【Unity入门计划】playground项目:2D飞船移动小游戏_第13张图片

5.2 添加碰撞->障碍物

添加ModifyHealth脚本组件

playground项目中已经给我们打包好了一个更改血量的脚本组件。

Assets -> Scripts -> Attributes -> ModifyHealthAttribute

通过Add Component给刚刚的障碍物添加这个脚本组件,加入时我们需要选择:

【Unity入门计划】playground项目:2D飞船移动小游戏_第14张图片

这个组件需要添加一个2D碰撞体(Collider 2D)来实现碰撞,这里需要选择碰撞物的类型,因为我们的障碍物——小行星是不规则的物体,这里可以选择polygon

关于2D碰撞体,可以看我另一篇介绍的博客:Unity学习-2D碰撞体Collider 2D_flashinggg的博客

可以看到,这个封装好的组件包含了:

  • Modify Health组件——实现飞机碰到它之后掉血的操作

 【Unity入门计划】playground项目:2D飞船移动小游戏_第15张图片

  • Polygon Collider 2D 2D碰撞体——要想实现碰撞检测,飞机和陨石都应该是个碰撞体,因此需要给陨石也加上一个碰撞体组件,注意,这里不能是触发器,因此需要去掉Is Trigger的复选框;

 【Unity入门计划】playground项目:2D飞船移动小游戏_第16张图片

添加2D刚体组件

我们还想实现陨石被碰撞后有点小移动的效果,因此还要给陨石一个Rigidbody 2D的2D刚体组件,并适当的调整刚体的参数值,吗,模拟真实效果。

【Unity入门计划】playground项目:2D飞船移动小游戏_第17张图片

5.3 添加碰撞 -> 飞船

上面也提到了,想要实现碰撞必须二者都是碰撞体,因此还需要给飞船也添加一个Polygon Coliider 2D组件。

【Unity入门计划】playground项目:2D飞船移动小游戏_第18张图片

6 添加减血效果

6.1 添加用户交互界面

【Unity入门计划】playground项目:2D飞船移动小游戏_第19张图片

playground项目也封装好了这样一个用户交互界面的组件,搜索interface找到UserInterface组件拖入右侧的Hierarchy窗口即可。 

【Unity入门计划】playground项目:2D飞船移动小游戏_第20张图片 【Unity入门计划】playground项目:2D飞船移动小游戏_第21张图片

6.2 实现血量减少操作

血量控制是以下两个部分共同完成的

  • 障碍物拥有的Modify Health——碰撞后改变血量

【Unity入门计划】playground项目:2D飞船移动小游戏_第22张图片

  • 飞船自身血量,需要添加一个Health System组件以设定初始生命值

 【Unity入门计划】playground项目:2D飞船移动小游戏_第23张图片

 【Unity入门计划】playground项目:2D飞船移动小游戏_第24张图片

 以上都完成后,移动飞船当碰撞到障碍物陨石后,左上角就会减少生命值。

7 添加背景图

依旧是用项目提供的图,images -> Backgrounds,把Space拖入Hierarchy就行。

但是需要修改图的尺寸以及背景图、飞机、障碍物的图层顺序,避免出现遮挡。

7.1 调整图层顺序

图层顺序在每个对象的Sprite Renderer中修改,我的unity2021.3版本中可以直接修改layer的顺序来调整:

  • BG_Space -> 0
  • ship&Asteroid2 -> 1 

就可以避免背景遮挡我们的飞船和障碍物了。

7.2 调整背景尺寸

这里尺寸设置为

 

最终效果:

【Unity入门计划】playground项目:2D飞船移动小游戏_第25张图片

8 添加预制件

由于游戏不只有一个障碍物,还会添加进多个障碍物,但是障碍物的一系列属性都应该是一样的,这时候就需要用到unity里的预制件,就是一个可重复使用的资源模板

关于预制件的创建和使用:Unity学习-预制件 Prefab_flashinggg的博客

添加了几个障碍物后,调整了一下大小和样式,结果如图:

【Unity入门计划】playground项目:2D飞船移动小游戏_第26张图片

9 添加星星以获得分数

这是游戏的最后一部分,需要加入可以”吃掉“且”吃掉“后获得分数的功能。

9.1 加入星星

Project窗口搜索star,并拖入Hierarchy窗口 

【Unity入门计划】playground项目:2D飞船移动小游戏_第27张图片

还需要修改Star的图层顺序,Order in Layer改成1即可。

9.2 加入获取分数组件

仍旧是Star的Add Component -> 搜索Collectable

加入后可以发现,同步需加入一个碰撞体组件,选择polygon就行。

【Unity入门计划】playground项目:2D飞船移动小游戏_第28张图片

注意,这里的Polygon Collider 2D的Is Trigger需要勾选上,这里就能达到“碰到星星并吃掉”的效果。

【Unity入门计划】playground项目:2D飞船移动小游戏_第29张图片

Collectable脚本中上述内容就是实现:飞机碰到星星后 -> score++ -> 星星消失,的效果,具体编写之后会进行C#的学习。

10 分组便于管理

操作部分就结束了!挺简单的,最后可以把同类别的对象分组,便于管理。

【Unity入门计划】playground项目:2D飞船移动小游戏_第30张图片


结束了第一个Unity的练习,继续努力!

【Unity入门计划】playground项目:2D飞船移动小游戏_第31张图片

你可能感兴趣的:(Unity学习,unity,学习,游戏引擎)