目录
跟学的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 分组便于管理
【unity2022入门】整合Unity官方教程设计最佳学习路线,Unity精讲入门系列,持续更新中...._哔哩哔哩_bilibili
2021.3.6f1c1
进入assetstoreUnity Asset Store - The Best Assets for Game Making
搜索Unity playground保存,再从Unity导入Assert即可。
palyground项目是官方给新手推荐的入门视频,预设了一个封装过的开发环境,让我们很好的上手,来熟悉游戏概念和制作流程,比较好操作!
Assets -> Scene 右键-> Create -> Scene,新建一个场景。
点一下名称就可以重命名了,命名为PlaneAsteroid
双击这个Scene对象, 右侧的Hierarchy窗口就会显示出当前的场景对象。
引擎会默认同时创建:玩家摄像头Main Camera和方向光Directional Light两个对象。
在这个“宇宙飞船”的小游戏中,玩家操作的是飞船,因此这个游戏的玩家对象就是飞船了!
我们就用已经导入的playground项目里的资源就行。
Assets -> Images -> Spaceships,选择喜欢的飞船,添加到场景中,添加到场景有两种方式:
初始的飞船太大了,在Game视图中点击运行的话,会是这样
于是就要给它缩小一点, 退出运行状态 -> 选中SpaceshipRed对象 -> R键,实现缩放。
同时,如果想要精确的缩放,右侧Inspector窗口 -> Transform层级下的Scale,输入数值即可。
还可以打开Scale的锁定按钮,实现XYZ三向等比缩放,我这里选择的是缩放到0.2.
可以再在Game视图运行查看,大小就舒服一点了。
教程里UP游戏视图的背景色跟我不太一样,我也想要调成纯色的,找了一下发现是在玩家摄像机Main Camera的Inspector中更改。
Main Camera -> Inspector -> Camera -> Clear Flags&Background,可以看到初始是用的天空盒,这里改成Solid Color并把颜色设置成黑色。
根据教程,在Inspector窗口更改飞船名字 -> ship,在Hierarchy窗口中名字也会自动同步了。
unity官方:标签 - Unity 手册
其余的比如代码怎么写的,以后再说,这里先给我们的飞船物体给个Player的Tag。
直接用playground项目里写好的Move脚本就可以,点开可以在右侧的Inspector查看代码。
那么怎么把脚本赋给我们的飞船呢?有两种方式:
添加之后,可以看到属性里多了一个 Rigidbody 2D 和一个 Move With Arrows,对于2D刚体组件Rigidbody 2D我进行了初步的学习总结:Unity学习-2D刚体Rigidbody 2D
另一个Move With Arrows是编程创建的一个通过键盘控制游戏对象的一个组件。
Assets -> Images -> Asteroids,选择小行星加入Scene中,并调整大小。
playground项目中已经给我们打包好了一个更改血量的脚本组件。
Assets -> Scripts -> Attributes -> ModifyHealthAttribute
通过Add Component给刚刚的障碍物添加这个脚本组件,加入时我们需要选择:
这个组件需要添加一个2D碰撞体(Collider 2D)来实现碰撞,这里需要选择碰撞物的类型,因为我们的障碍物——小行星是不规则的物体,这里可以选择polygon。
关于2D碰撞体,可以看我另一篇介绍的博客:Unity学习-2D碰撞体Collider 2D_flashinggg的博客
可以看到,这个封装好的组件包含了:
Polygon Collider 2D 2D碰撞体——要想实现碰撞检测,飞机和陨石都应该是个碰撞体,因此需要给陨石也加上一个碰撞体组件,注意,这里不能是触发器,因此需要去掉Is Trigger的复选框;
我们还想实现陨石被碰撞后有点小移动的效果,因此还要给陨石一个Rigidbody 2D的2D刚体组件,并适当的调整刚体的参数值,吗,模拟真实效果。
上面也提到了,想要实现碰撞必须二者都是碰撞体,因此还需要给飞船也添加一个Polygon Coliider 2D组件。
playground项目也封装好了这样一个用户交互界面的组件,搜索interface找到UserInterface组件拖入右侧的Hierarchy窗口即可。
血量控制是以下两个部分共同完成的
以上都完成后,移动飞船当碰撞到障碍物陨石后,左上角就会减少生命值。
依旧是用项目提供的图,images -> Backgrounds,把Space拖入Hierarchy就行。
但是需要修改图的尺寸以及背景图、飞机、障碍物的图层顺序,避免出现遮挡。
图层顺序在每个对象的Sprite Renderer中修改,我的unity2021.3版本中可以直接修改layer的顺序来调整:
就可以避免背景遮挡我们的飞船和障碍物了。
7.2 调整背景尺寸
这里尺寸设置为
最终效果:
由于游戏不只有一个障碍物,还会添加进多个障碍物,但是障碍物的一系列属性都应该是一样的,这时候就需要用到unity里的预制件,就是一个可重复使用的资源模板。
关于预制件的创建和使用:Unity学习-预制件 Prefab_flashinggg的博客
添加了几个障碍物后,调整了一下大小和样式,结果如图:
这是游戏的最后一部分,需要加入可以”吃掉“且”吃掉“后获得分数的功能。
Project窗口搜索star,并拖入Hierarchy窗口
还需要修改Star的图层顺序,Order in Layer改成1即可。
仍旧是Star的Add Component -> 搜索Collectable
加入后可以发现,同步需加入一个碰撞体组件,选择polygon就行。
注意,这里的Polygon Collider 2D的Is Trigger需要勾选上,这里就能达到“碰到星星并吃掉”的效果。
Collectable脚本中上述内容就是实现:飞机碰到星星后 -> score++ -> 星星消失,的效果,具体编写之后会进行C#的学习。
操作部分就结束了!挺简单的,最后可以把同类别的对象分组,便于管理。
结束了第一个Unity的练习,继续努力!