本期我们继续为大家进行小型太空射击游戏的后续教程

本篇教程重点

武装大炮

将碎片放入太空

10.全部放在一起

小型太空射击游戏教程篇幅较长,分为四篇,本篇为第四篇,有小伙伴没有看  Unity基础案例讲解:创建小型太空射击游戏(三)可以先去看一下

虽然四处飞行很有趣,但大多数玩家都渴望发射几十个光子鱼雷!

提供了一个脚本来帮助您满足这种渴望。

在层次结构中选择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.

保存您的工作,运行游戏,然后按空格键,用离子大炮开炸!

到目前为止,您有一艘可以射击的船,但是如果有什么东西可以射击的话,那会更有趣。现在是时候向混合物中添加一些小行星了。

在下载的文件中找到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)。

现在您已经配置了飞船和小行星,接下来需要将所有元素组合在一起并创建一个简单的游戏。

单击层次结构中的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中创建了自己的第一款游戏!

在以后的教程中,您将了解Unity的各个小节,这些小节实际上可以使您精通此游戏。您还将学习如何编写自己的脚本以利用Unity的灵活API。

Unity基础案例讲解:创建小型太空射击游戏(四)相关推荐

  1. UE4创建第一人称射击游戏学习教程

    Unreal Engine 4: Create Your Own First-Person Shooter MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言 ...

  2. mac太空射击游戏:Nova Drift (新星漂移)中文版

    Nova Drift是一款激动人心的太空射击游戏. Nova Drift Mac整合了现代独立游戏风格和游戏历史上最深的根源.它不仅具有时尚和性感的外观,而且具有平稳的控制功能.玩家控制着一艘不断开发 ...

  3. UE4创建第一人称射击游戏学习教程 Unreal Engine 4: Create Your Own First-Person Shooter

    UE4创建第一人称射击游戏学习教程 本课程包含38节视频课,将逐步指导您完成以下主题: 云桥网络 平台获取课程! 如何创建6种可定制的武器(包括手枪.突击步枪.猎枪.狙击枪.榴弹发射器和火箭发射器) ...

  4. iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)

    实战需求 使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 1.主界面 import SpriteKit im ...

  5. 【githubshare】基于 C 语言编写的一款 2D 太空射击游戏,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试

    基于 C 语言编写的一款 2D 太空射击游戏:space-shooter.c,已在 Windows 10 和 Ubuntu Linux 16.04 系统上跑通测试. GitHub:github.com ...

  6. 发个2D太空射击游戏代码

    很久前写的一个 2D 太空射击游戏,使用的是 DirectX 库和 C++ 开发. 现在看来程序结构虽不算合理,但是里面基本包括了一个 2D 太空射击游戏的基本元素:卷屏,碰撞检测,不同类型的敌人和 ...

  7. unity太空射击源码_引擎入门 | 创建双杆射击游戏(入门 2)

    点击上方"蓝字"关注我们吧! 本期我们继续为大家进行双杆射击游戏的后续教程 学习内容 3.整理资产 4.导入资产 5.安装 Blender 6.导入包 文章末尾可免费获取教程源代码 ...

  8. 对 Unity 太空射击游戏的实践

    写在前面 # 本次 Space Shooter 实践通过实现以下功能达到加深对 U3D 游戏开发的认知. 键盘控制飞船移动; 发射子弹设计目标; 随机生成大量障碍物; 计分; 实现游戏对象的生命周期管 ...

  9. 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本

    飞机大战素材 太空大战unity工程文件 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本 希望能对初学者提供帮助,代码根据教材以及out了的代码更新了, ...

  10. 游戏脚本代码大全_引擎入门 | 创建双杆射击游戏(组件 2)

    点击上方"蓝字"关注我们吧! 本期我们继续为大家进行双杆射击游戏(组件)的后续教程 学习内容 18.脚本介绍 19.为什么不用JavaScript? 20.创建第一个脚本 21.M ...

最新文章

  1. 自动化测试,从入门到放弃
  2. jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗
  3. Kinect开发笔记之二Kinect for Windows 2.0新特性
  4. ftp完成版本更新php,php – 将开发团队从FTP转换为版本控制系统
  5. 连续自然数和(洛谷-P1147)
  6. android webview 例子,android – webview shouldinterceptrequest示例
  7. levy过程和布朗运动的关系_金融数学之定价模型基础解释【布朗运动|维纳过程|伊藤引理】...
  8. 满怀希望,快乐坚强。
  9. umpy知识点补充:np.vstack()np.hstack()
  10. 《初级会计电算化实用教程(金蝶KIS专业版)》一导读
  11. 2022杭州华为OD面试经历
  12. 程序与算法的区别和内在联系(算法是什么?程序又是什么?)
  13. 存储和多屏互动,蜂鸟网的NAS应用解析
  14. 大数据的概念、特点及应用场景
  15. 大数据lambda架构实现方案
  16. 有自学能力的人,赚钱极其简单—来福宝盒
  17. 汉诺塔(Tower of hanoi)
  18. Java基础知识:线程池的种类(5种)
  19. c++第二次作业-定期存款利息计算器
  20. 用Python实现爬虫爬取京东笔记本电脑图片

热门文章

  1. 基于Python的南京二手房数据采集及可视化分析设计
  2. 使用python绘制一个太阳花代码_如何绘制多样化的太阳花?
  3. BTA | CSDN蒋涛:区块链时代最大赢家,将属于技术、经济、组织的三合一高手
  4. jersey 过滤_Jersey 开发RESTful(十五) Jersey的拦截器
  5. 简说 SSH 隧道-- Local 与 Remote 端口转发
  6. vue搭配three.js创建3D旋转方块
  7. SRT (SubRip)字幕
  8. 如何实现批量截取整个网页完整长截图?内容很多很高浏览器看不全Chrome插件崩溃无需安FireShot,优爱酷批量长网页整页截图系统,设计师推荐的必备好工具好方法web2pic,html2jpeg
  9. 一片文章彻底搞懂各种DDos攻击方式
  10. oracle的同义词删不掉,oracle 删除同义词