Unity小游戏教程系列 | 创建小型太空射击游戏(4)
本期我们继续为大家进行小型太空射击游戏的后续教程
本篇教程重点
8.武装大炮
9.将碎片放入太空
10.全部整合到一起
小型太空射击游戏教程篇幅较长,分为四篇,本篇为第四篇,有小伙伴没有看【小型太空射击游戏(三)】可以先去看一下
欢迎加入我们的Unity问题交流群:1146128932
8.武装大炮
虽然四处飞行很有趣,但大多数玩家都渴望发射几十个光子鱼雷!
提供了一个脚本来帮助您满足这种渴望。
在层次结构中选择Spaceship,然后在“ Inspector”窗口中单击“ Add Component”按钮。单击Scripts / Ion Cannon.
您会注意到Audio Source和脚本已自动添加到GameObject中。
一些脚本需要组件。如果在GameObject上找不到组件,则会自动添加它们。
为了使您的对象播放声音,您需要音频源和音频剪辑。音频源可以附加到任何GameObject,而音频剪辑只是音频文件。
将拍摄声音从“ Project”窗口中的“ Sounds”文件夹中拖到“ Fire Sound”字段中。
您会注意到,“ Ion Cannon ”脚本具有“项目符号”字段。您的工作是创建项目符号对象。如果您不是艺术家,请不要担心-一个简单的球体就足够了。
单击层次结构中的创建按钮。从菜单中选择3D对象,然后选择Sphere.
在层次结构中选择 Sphere,然后使用检查器将“ Scale”设置为(X:0.47,Y:0.47,Z:0.47)。再次在层次结构中选择Sphere,并将其命名为Bullet。
由于您的子弹将在整个场景中移动,因此它也需要加入物理引擎。你还记得你需要做什么吗?旋转一下,如果卡住了,请检查下面的扰流板。
从层次结构中选择项目符号,然后单击检查器中的“ 添加组件” 按钮。选择“ 物理/刚体”以添加“刚体”组件。
子弹将需要速度运行,所以一定要确保是运动是选中。此外,确保利用重力是选中。
即使子弹飞离屏幕后,子弹也将继续飞行,就像您的飞船最初那样。将Bullet脚本从“项目”窗口拖动到Bullet GameObject上。现在,当子弹飞离屏幕时,它将自动被销毁。
最后,将Bullet对象拖到“ 项目”窗口的Prefab文件夹中。这将创建项目符号的预制,从而使您可以使用脚本创建大量项目符号。
现在,您已将子弹创建为Prefab,请从“ 层次结构”中删除该子弹的实例。
再次选择您的太空飞船,然后使用检查器将Bullet Prefab 添加到Bullet字段。检查器应如下所示:
最后,天空背景有些不合适,您会期望太空飞船在太空的黑色空隙中飞行,不是吗?
在层次结构中选择“ Main Camera ”,然后使用检查器将“Clear Flags ”设置为“ Solid Color ”,将“ Background Color”设置为 black.
保存您的工作,运行游戏,然后按空格键,用离子大炮开炸!
9.将碎片放入太空
到目前为止,您有一艘可以射击的船,但是如果有什么东西可以射击的话,那会更有趣。现在是时候向混合物中添加一些小行星了。
在下载的文件中找到rock_d_05.obj文件,并将其拖到“项目”窗口中的“ Models”文件夹中。
右键单击rock_d_05.obj并将其重命名为Asteroid。
该文件仅包含有关模型本身的信息,它不包含任何动画。
将 Asteroid模型拖到“ Scene view”中以创建其实例。您会看到小行星当前为纯白色。
尽管您可以说它是雪白彗星的碎片,但您应该学习如何构造模型……除非您想从事制作以雪为主题的游戏的职业
展开Asteroid GameObject并选择其名为rockLP001的子对象。在检查器中,您将看到此子GameObject附加了一个Mesh Renderer组件。渲染器将对象绘制到屏幕上,但是需要一些帮助才能做到这一点-这就是材质发挥作用的地方。
材料决定了对象的外观,例如,棉衬衫与石膏墙的外观将有很大不同。
Unity通过使用每种材质封装Shader来实现此目的。
你问什么是Shader?这是一个简单的程序,以类似C的语言编写,并在GPU上运行。着色器可以足够简单以在立方体上渲染纹理,也可以足够复杂以模拟水。
Unity提供了许多不同的着色器。例如,您可以使用它们渲染天空盒,或使对象看起来是半透明的。
在“项目”窗口中打开“ Materials”文件夹,然后单击“ Create ”按钮。从下拉列表中,选择Material并将其命名为Asteroid。现在,在“Inspector ”窗口中,您将看到材料的可用属性。
1:着色器选项使您可以从许多预打包的着色器之一中进行选择。默认的标准着色器具有极大的灵活性,因此请选择它。
2: 撞击小行星时,您需要将其淡出,因此请将“ Rendering Mode”设置为“Fade”。
3:该 Albedo属性包含实际的质感。您可以通过提供颜色对其进行着色。
将flint_like_rock_4787图像从“ 项目”窗口中的“ Textures ”文件夹拖动到Albedo属性中:
4:查看“检查器”窗口底部的Asteroid材质预览,您会注意到该材质看起来有点过于光滑,就像它已经打磨过一样。(如果看不到材质预览,请尝试像这样从“检查器”的底部向上拖动Asteroid标题栏):
在Metallic属性下,您将看到两个滑块。第一个滑块确定材料的金属外观,而另一个滑块确定纹理的粗糙度。
现在,将“ Metallic”滑块设置为0.219
5:将“ Smoothness ”滑块设置为0.149。您的材料现在应如下所示:
所有材料配置完毕后,您现在需要将其添加到小行星中。将您的Asteroid材质从“项目”窗口拖动到“ Scene view.”中的Asteroid GameObject
太棒了!您有一颗小行星准备引起很多麻烦。但是首先,您需要为其添加一些行为。
拖动Debris从脚本Project window在Scripts folder中的小行星。
碎片脚本会自动将球体碰撞器,刚体和音频源添加到小行星。现在设置所有必需的属性。
1:将Sphere Collider的中心设置为(X:0.01,Y:-0.09,Z:0.89)。
2:将Radius 设置为1.49。
3:选中是 Trigger复选框。
4:对于刚体,请取消选中“ Use Gravity ”复选框。
5:选中是Kinematic 复选框。
6:对于Debris script,将“ Min Speed”设置为15。
7:将 Max Speed设置为30。
8:将explosion 声音文件从“Sounds”文件夹拖到“Explosion Sound”字段。
9:对于Asteroid GameObject的变换,将Scale设置为(X:3.02,Y:3.02,Z:3.02)。
10:添加Debris组件还添加了必需的“ Renderer Fade”组件。当子弹与小行星碰撞时,小行11 星应逐渐消失而不是从屏幕上消失。该组件仅需要一个淡入淡出时间,因此请将“ Fade Time”设置为0.5。
随着小行星从屏幕上移开,它们应该像宇宙飞船一样包裹。
从“项目”窗口中的“脚本”文件夹中,将ScreenWrap脚本拖到Asteroid上。就像使用太空飞船一样,您需要使用正确的渲染器配置屏幕包裹。
小行星有一个名为rockLP001的子游戏对象。将此子GameObject拖到Asteroid GameObject 的检查器中的“ Screen Wrap ”组件的“ 渲染器”属性。
最后,将小行星从“层次结构”拖到“项目”窗口中的Prefab文件夹。当提示您创建预制时,单击原始预制。现在您已经完成了创建Asteroid Prefab的工作,从层次结构中删除Asteroid实例。
您需要的最后一件事是所有小行星的生成点。单击层次结构中的创建按钮,然后选择创建空。命名您的产卵点Debris.。
您将希望此生成点与播放器在同一平面上。否则,玩家将在碎片上方或下方飞行。用作参考的良好GameObject是missile_R_0,因为它位于模型的中心。
拖动碎片游戏物体,并使其成为一个孩子的missile_R_0。然后,碎片的变换坐标将相对于其父级GameObject。
要匹配父对象的坐标,请将“碎片”位置设置为X:0,Y:0,Z:0)。通过这个小技巧,您可以确定太空飞船和碎片在同一平面上。
接下来,将“ Debris ”移动到其原来所在的“层次结构”视图的底部。
向右移动 Debris游戏对象7.5点。如果您没有设法使它们完全相同,则其新位置应为(X:20.0,Y:1.72,Z:7.06)。
10.全部整合在一起
现在您已经配置了飞船和小行星,接下来需要将所有元素组合在一起并创建一个简单的游戏。
单击层次结构中的Create按钮,然后选择Create Empty。在Inspector中,单击新GameObject的名称,并将其命名为GameManager。
随着GameManager的层次选择,点击添加GameManager,选择Scripts,然后选择游戏管理器。
您会看到该操作也添加了音频源。此外,GameManager组件具有几个需要设置的字段,这些字段将用于生成小行星。
从“Debris ”字段开始。确保在“层次结构”中选择了GameManager,然后将Asteroid Prefab拖动到“ Debris ”字段中。
那你在这里做什么?该GameManager负责产卵小行星。它使用“ 碎片”字段来确定要生成的对象。您告诉它使用Asteroid Prefab。
接下来,仍然在GameManager上:
1:将“ Min Time”设置为2,将“ Max Time ”设置为5。这告诉脚本它应该多快生成小行星。
2:将“ Total Items on Screen ”设置为5。这将小行星的数量限制为5,这样玩家就不会感到不知所措。
3:将“ Debris GameObject”从“层次结构”拖到“ 屏幕碎片”字段。这指定GameManager应该在碎片GameObject上生成小行星。
该游戏管理器组件应如下所示:
最后,在Audio Source component,添加background-music 的AudioClip领域,并确保检查 loop 复选框。
运行您的游戏,并查看一切。
欢迎加入我们的Unity问题交流群:1146128932
恭喜,您已经在Unity中创建了自己的第一款游戏!
在以后的教程中,您将了解Unity的各个小节,这些小节实际上可以使您精通此游戏。您还将学习如何编写自己的脚本以利用Unity的灵活API。
Unity小游戏教程系列 | 创建小型太空射击游戏(4)相关推荐
- UE4创建第一人称射击游戏学习教程
Unreal Engine 4: Create Your Own First-Person Shooter MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言 ...
- UE4创建第一人称射击游戏学习教程 Unreal Engine 4: Create Your Own First-Person Shooter
UE4创建第一人称射击游戏学习教程 本课程包含38节视频课,将逐步指导您完成以下主题: 云桥网络 平台获取课程! 如何创建6种可定制的武器(包括手枪.突击步枪.猎枪.狙击枪.榴弹发射器和火箭发射器) ...
- 微信小程序之组件 —— 微信小程序教程系列(19)
什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格的样式. 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. <tagname property ...
- 微信小程序的如何使用全局属性 —— 微信小程序教程系列(5)
微信小程序提供了app.js文件,用于放置一些全局的函数和全局的属性. 一般情况下,我都会把一些常用的函数和属性写在app.js文件内,这样不用在页面之间传值,或者不用重复加载. 下面以全局属性为例 ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
- 微信小程序使用百度api获取天气信息 —— 微信小程序教程系列(16)
之前已经介绍过,如何使用百度地图api来获取地理位置信息 微信小程序的百度地图获取地理位置 -- 微信小程序教程系列(15) 下面介绍使用百度api来获取天气信息. 1> 第一步:先到百度开放平 ...
- 微信小程序的网络请求 —— 微信小程序教程系列(14)
网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...
- 微信小程序的文件结构 —— 微信小程序教程系列(1)
文件结构 示例目录:HelloWorld *******************************************************分割线********************* ...
- 微信小程序获取系统日期和时间 —— 微信小程序教程系列(17)
获取当前系统日期和时间 在小程序中,新建项目时,就会有一个utils.js文件,就是获取日期和时间的,代码如下: utils.js: function formatTime(date) {var ye ...
- 微信小程序标题栏和导航栏的设置 —— 微信小程序教程系列(7)
设置标题栏 标题栏window 在app.json文件里面,通过window对象里面的属性进行设置 示例: app.json: 运行: 设置导航栏 导航栏TabBar 如果我们的小程序是一个多 tab ...
最新文章
- java 8 stream reduce详解和误区
- nuget 包管理器
- ASP.NET中的Eval()和DataBinder.Eval()方法
- MFC创建MDI程序一个Doc对应多个View
- Spark操作Hive分区表
- “鱼渔合作”在IT运维中的启示
- FireBug不能用了?使用火狐Try Xpath插件替代Firebug和Firepath
- mac 下载appium
- DotNetBar布局(一)
- 爱忘事、不自律,有了这5款时间管理工具,堪比“罗志祥”!
- 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合
- 国家地区代号与英文名对应表
- android 百度地图api切换城市,【百度地图API】关于如何进行城市切换的三种方式...
- RIP、OSPF、BGP、动态路由选路协议、自治域AS
- 计算机使用的显示器主要有两类,2015年计算机专转本预测题及答案
- sqrt (2)不使用数学库,求2的开方。
- 使用JavaFX编写桌面程序,UI部分
- 摸着石头过河的区块链游戏真是一门好生意吗?
- Data2SQL数据脚本生成器
- 图像处理界的标准图像lena背后的故事