【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
双击这个Scene对象, 右侧的Hierarchy窗口就会显示出当前的场景对象。
引擎会默认同时创建:玩家摄像头Main Camera和方向光Directional Light两个对象。
3 创建玩家飞船
在这个“宇宙飞船”的小游戏中,玩家操作的是飞船,因此这个游戏的玩家对象就是飞船了!
我们就用已经导入的playground项目里的资源就行。
Assets -> Images -> Spaceships,选择喜欢的飞船,添加到场景中,添加到场景有两种方式:
- 直接拖到Scene视图中,这个方法可以直接实现对象在Scene中的定位
- 拖到Hierarchy窗口中,这个方法可以实现在加入的同时创建父子关系
3.1 调整大小位置
初始的飞船太大了,在Game视图中点击运行的话,会是这样
于是就要给它缩小一点, 退出运行状态 -> 选中SpaceshipRed对象 -> R键,实现缩放。
同时,如果想要精确的缩放,右侧Inspector窗口 -> Transform层级下的Scale,输入数值即可。
还可以打开Scale的锁定按钮,实现XYZ三向等比缩放,我这里选择的是缩放到0.2.
可以再在Game视图运行查看,大小就舒服一点了。
3.2 调整Game视图的背景
教程里UP游戏视图的背景色跟我不太一样,我也想要调成纯色的,找了一下发现是在玩家摄像机Main Camera的Inspector中更改。
Main Camera -> Inspector -> Camera -> Clear Flags&Background,可以看到初始是用的天空盒,这里改成Solid Color并把颜色设置成黑色。
3.3 Inspector -> 重命名&更改Tag
根据教程,在Inspector窗口更改飞船名字 -> ship,在Hierarchy窗口中名字也会自动同步了。
关于Unity的标签(Tag)
unity官方:标签 - Unity 手册
- 在Unity里,Tag是分配给一个或多个游戏对象的参考词,起到标识、区分的作用;
- 同一类的模型,可以设置成统一的标签;
- 查找物体就可以按标签进行查找了;
其余的比如代码怎么写的,以后再说,这里先给我们的飞船物体给个Player的Tag。
4 飞船移动
直接用playground项目里写好的Move脚本就可以,点开可以在右侧的Inspector查看代码。
那么怎么把脚本赋给我们的飞船呢?有两种方式:
- 外行的一种方式——把Move脚本拖拽到ship的Inspector窗口里;
- 比较建议的方式——从ship的Inspcetor窗口的Add Component添加
添加之后,可以看到属性里多了一个 Rigidbody 2D 和一个 Move With Arrows,对于2D刚体组件Rigidbody 2D我进行了初步的学习总结:Unity学习-2D刚体Rigidbody 2D
另一个Move With Arrows是编程创建的一个通过键盘控制游戏对象的一个组件。
5 添加障碍物和碰撞
5.1 添加障碍物
Assets -> Images -> Asteroids,选择小行星加入Scene中,并调整大小。
5.2 添加碰撞->障碍物
添加ModifyHealth脚本组件
playground项目中已经给我们打包好了一个更改血量的脚本组件。
Assets -> Scripts -> Attributes -> ModifyHealthAttribute
通过Add Component给刚刚的障碍物添加这个脚本组件,加入时我们需要选择:
这个组件需要添加一个2D碰撞体(Collider 2D)来实现碰撞,这里需要选择碰撞物的类型,因为我们的障碍物——小行星是不规则的物体,这里可以选择polygon。
关于2D碰撞体,可以看我另一篇介绍的博客:Unity学习-2D碰撞体Collider 2D_flashinggg的博客
可以看到,这个封装好的组件包含了:
- Modify Health组件——实现飞机碰到它之后掉血的操作
Polygon Collider 2D 2D碰撞体——要想实现碰撞检测,飞机和陨石都应该是个碰撞体,因此需要给陨石也加上一个碰撞体组件,注意,这里不能是触发器,因此需要去掉Is Trigger的复选框;
添加2D刚体组件
我们还想实现陨石被碰撞后有点小移动的效果,因此还要给陨石一个Rigidbody 2D的2D刚体组件,并适当的调整刚体的参数值,吗,模拟真实效果。
5.3 添加碰撞 -> 飞船
上面也提到了,想要实现碰撞必须二者都是碰撞体,因此还需要给飞船也添加一个Polygon Coliider 2D组件。
6 添加减血效果
6.1 添加用户交互界面
playground项目也封装好了这样一个用户交互界面的组件,搜索interface找到UserInterface组件拖入右侧的Hierarchy窗口即可。
6.2 实现血量减少操作
血量控制是以下两个部分共同完成的
- 障碍物拥有的Modify Health——碰撞后改变血量
- 飞船自身血量,需要添加一个Health System组件以设定初始生命值
以上都完成后,移动飞船当碰撞到障碍物陨石后,左上角就会减少生命值。
7 添加背景图
依旧是用项目提供的图,images -> Backgrounds,把Space拖入Hierarchy就行。
但是需要修改图的尺寸以及背景图、飞机、障碍物的图层顺序,避免出现遮挡。
7.1 调整图层顺序
图层顺序在每个对象的Sprite Renderer中修改,我的unity2021.3版本中可以直接修改layer的顺序来调整:
- BG_Space -> 0
- ship&Asteroid2 -> 1
就可以避免背景遮挡我们的飞船和障碍物了。
7.2 调整背景尺寸
这里尺寸设置为
最终效果:
8 添加预制件
由于游戏不只有一个障碍物,还会添加进多个障碍物,但是障碍物的一系列属性都应该是一样的,这时候就需要用到unity里的预制件,就是一个可重复使用的资源模板。
关于预制件的创建和使用:Unity学习-预制件 Prefab_flashinggg的博客
添加了几个障碍物后,调整了一下大小和样式,结果如图:
9 添加星星以获得分数
这是游戏的最后一部分,需要加入可以”吃掉“且”吃掉“后获得分数的功能。
9.1 加入星星
Project窗口搜索star,并拖入Hierarchy窗口
还需要修改Star的图层顺序,Order in Layer改成1即可。
9.2 加入获取分数组件
仍旧是Star的Add Component -> 搜索Collectable
加入后可以发现,同步需加入一个碰撞体组件,选择polygon就行。
注意,这里的Polygon Collider 2D的Is Trigger需要勾选上,这里就能达到“碰到星星并吃掉”的效果。
Collectable脚本中上述内容就是实现:飞机碰到星星后 -> score++ -> 星星消失,的效果,具体编写之后会进行C#的学习。
10 分组便于管理
操作部分就结束了!挺简单的,最后可以把同类别的对象分组,便于管理。
结束了第一个Unity的练习,继续努力!
【Unity入门计划】playground项目:2D飞船移动小游戏相关推荐
- 【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
目录 1 TileMap概念 主要思想 优点 创建的层级 2 Unity中的TileMap 2.1 自动父级Grid 网格 2.2 Sprite精灵 2.3 Tile 瓦片 2.4 Tile Pale ...
- 【Unity入门计划】制作RubyAdventure03-使用碰撞体触发器实现世界交互
目录 8 添加生命系统 演示效果 9 使用触发器实现吃血包 9.1 添加一个可以被吃掉的血包 10 使用触发器添加伤害区域 10.1 设置伤害区域 10.2 设置无敌时间 关于无敌时间的讨论 10.3 ...
- 从零点五开始用Unity做半个2D战棋小游戏(完)
好久不见. 这是第29篇与游戏开发有关的文章. | 写在最前 这次想要做一个简单且传统的战棋小游戏,大概的玩法是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方在地图上轮流行动,并向对方发动 ...
- Unity 4 3 制作一个2D横版射击游戏 2
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...
- Unity制作2D战棋小游戏
写在最前 这次想要做一个简单且传统的战棋小游戏,大概的玩法是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方在地图上轮流行动,并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利. 今天我们来 ...
- 用Unity做半个2D战棋小游戏
写在最前 这次想要做一个简单且传统的战棋小游戏,大概的玩法是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方在地图上轮流行动,并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利. 今天我们来 ...
- Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现
Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 一 ...
- java基础入门-16-【阶段项目(综合练习doudizhu游戏)】
Java基础入门-16-[阶段项目(综合练习&doudizhu游戏)] 25.阶段项目(综合练习&doudizhu游戏) 斗地主小游戏 斗地主游戏1(控制台版) 步骤一:准备牌 步骤二 ...
- Unity 4.3 制作一个2D横版射击游戏(2)
在上一篇<Unity 4.3 制作一个2D横版射击游戏>时,已经完成一个基本的射击游戏了.在这一篇将继续完善. 1.视差卷轴效果 为了达到这种视差卷轴的效果,可以让背景层以不同的速度进行移 ...
最新文章
- 学习官方示例 - System.TClass
- android x86怎么引导,Android、Ubuntu、win三系统引导求教
- 存储过程中将sql语句结果赋值给变量
- 杯子 + Kronican
- 短网址生成+域名检测+短网址还原等四合一前端源码
- Ubuntu下安装Rabbitmq和golang环境
- c# 如何读取和写入ini(配置文件)
- 删除linux分区后grub,删除Ubuntu分区后GRUB救援问题!
- 微软将于下周展示平板电脑操作系统
- 单片机(ISIS 7 Professional):交通灯代码项目
- 《算法的乐趣》终于出版了
- 概率论与数理统计(陈希孺)笔记2.1
- 2022软工K班个人编程任务
- boost升压电路遇到过的问题
- Springboot实现拦截器功能
- iPad /iPhone无法开机、白苹果怎么办?教你快速解决iPad /iPhone开不了机的难题
- 绘真妙笔千山怎么在电脑上玩 绘真妙笔千山安卓模拟器教程
- 2019金华正睿集训总结
- java全栈系列之JavaSE-面向对象(接口定义与实现)042
- Java 实现XOR(异或)校验
热门文章
- 03【应届生精准求职】如何准备面试?校招流程,零经验如何面对?看穿面试官背后的套路?面试类型?如何谈薪资?接受或拒绝offer?
- C# 实现简易QQ界面
- 全球及中国POCT行业发展现状分析,市场主要集中在经济发达地区「图」
- php notice undefined variable,PHP提示Notice: Undefined variable的解决办法
- vue2乾坤框架搭建
- Unity3d Animator 动画倒放
- C#.Net 设计模式学习笔记之结构型 (三)
- 如何利用 ArcGIS Pro 和 Landsat 8 图像计算叶绿素指数和全球环境监测指数
- windows 下使用Qt抓取桌面和鼠标
- FPGA学习第2天--蜂鸣器实现歌曲《两只老虎》