用unity动手先来试试一个简单的太空飞机大战吧。看官请继续往下。。。

最终效果,可控制己方战机,朝目标敌机发射子弹,打飞机~~~!伴随想象,慢慢呈现这个太空飞机大战游戏。

1、 新建打飞机unity工程,建好资源分类目录,导入飞机FBX模型文件以及贴图,射击和爆炸等声音文件等等。

2、 新建场景game.unity,下面大部分工作都在这个场景里完成!

3、我们想要游戏场景背景里显示一个火星球和星空的效果,这样更真实。新建一个平面体Plane作为火星背景模型;然后创建一个材质球命名为Background,指定好之前导入的火星贴图文件。操作如下:

4、 好,上面都是一个个来选择,来个拖动方式来进行一次关联操作。Unity几乎所有的关联操作都可以通过拖动方式完成!现在准备设置平面体即我们的火星背景模型材质,选中刚建好的Background材质球拖放到火星模型上。如图:

5、创建另一个平面体,放到火星后面,准备做一个星空的效果。同样创建星空材质球设置好贴图操作同上。然后将星空材质球拖到新的平面体。Ok,我们可以看到星空中的火星了。。。

6、 想让星空在运行游戏时缓动起来,产生动画效果,让你感觉星动~

这里先不详述UV动画以及动画制作过程。准备了个.anim动画文件,选中星空模型添加animation组件设置下动画文件为.anim文件,使星空有缓动效果。

7、上面步骤,已经将游戏需要模拟太空背景的效果处理差不多了,接下来需要调整试图角度,我们需要从上向下展望火星和星空。我调整了下摄像机视角和视野大小。选中Main Camera,选择GameObject里Align With View使摄像机视角与当前试图一致。现在就可以看到太空的火星和星空了,如图效果:

8、接下来,准备创建己方战机了,这就是我们要控制的主角了。把准备好的主角战机Fbx拖入场景里,调整下战机朝向:

9、让战机动起来。这里我们主要用到的是Input包装了输入功能的类,包括了很多键盘、鼠标或触控操作函数;Transform组件主要功能是和移动、旋转、缩放游戏体有关的。

选中我的战机模型,添加一个脚本给它,我们将在脚本里还需要做:

1.控制战机上、下、左、右来移动,控制移动速度;

2.控制战机发射子弹,以及子弹发射间隔;

3.控制战机生命值,设置战机爆炸声音和爆炸效果等等。

添加脚本,选中战机,将对应脚本拖到战机上即可,如下:

10、创建子弹

子弹是游戏中需要重复使用的游戏体,需要创建prefab。

将子弹Fbx拖入场景里,新建一个子弹的prefab,选中Hierarchy子弹游戏体拖入prefab上,如图示:

子弹主要是控制飞行、造成伤害值、自身生存时间。我们给子弹添加脚本

然后可删除场景里的子弹。

11、让我的战机能发射子弹,设置Player脚本参数,rocket就是我们创建的子弹prefab,设置0.1s发射间隔,另外还给了一个战机发射子弹的声音,如下:

上面说道了声音,凡是要发声的物体,需要添加audio source这个组件!

12、子弹主要是飞行然后消失。手机靓号买号消失分两种情况,一是碰撞了敌机,二是生存时间到了自动消失。这里提到碰撞和OnTriggerEnter事件,后面再说。脚本:

战机的话主要是移动,输入控制发射子弹,并伴随射击声音,脚本如下:

这里Instantiate是unity中函数实例化,不是我们常用的new!!!

13、现在仅有了主角战机、子弹,暂无其他交互了。运行中,我们可以看到实例化出来的子弹,以及其被delete的过程,截了一张运行时的图,详细如下:

14、好了,准备创建敌战机了。敌机也需要重复使用,先创建敌机的prefab,给敌机增加控制脚本,如图:

首先这种敌机我们不给其具有攻击性,不让其发射子弹,它就能移动,我方战机可以发射子弹打掉它。先整个简单点的敌机、简单点交互哈!

15、上面有提到碰撞和OnTriggerEnter事件,现在处理打掉敌机就需要运用了。

给敌机增加Box Collider组件,它是立方体碰撞组件,选中trigger使其有触发作用,简单说这个就能使OnTriggerEnter有响应了。

给敌机增加刚体组件。所有参与物理计算的游戏体都需要有一个刚体才能正常工作!不选use Gravity使其不受重力影响,选中Is Kinematic使其运动不受物理模拟影响。(以上改动都会自动更新与prefab一致)

同样,按上面所示给子弹、主角战机也添加Box Collider组件、刚体。

16、设置好敌机、子弹、主角战机的tag标志, 以下就是我们需要在各脚本OnTriggerEnter需要处理的逻辑!

敌机碰到子弹会损失生命直到为零就自动销毁;敌机撞到主角战机直接挂掉销毁;

2.子弹碰到敌机就自动销毁;

3.主角战机碰到非自己射出的子弹就减少一条命,直到为零自动销毁游戏结束!

17、为了防止敌机未被消灭会一直存活下去,我们可以在屏幕下方放置一个空的碰撞体,敌机碰到它就自动销毁咯。

18、通过上面所有步骤,我们就能控制战机移动、发射子弹攻击或直接撞击敌机。一个太空飞机大战游戏初期形式到此已基本完成!

后面,我们可以在这基础上动手去增加扩展:

超级敌机,继承自普通敌机,它将具备攻击能力,生命也更强,可以自动朝主角战机发射子弹,被其子弹命中可以减少主角生命值;

敌人生成器;

用GUI来展示游戏信息,比如战机生命值、当前得分,游戏失败状态等等;

可以加个start.scene新场景,加开始游戏按钮,点击后才进入game.scene;

可以改下战机移动,除方向键外,增加鼠标移动的控制,方便发布到手机上。

遇到的坑:我确认都已经将子弹、敌机、主角战机都加好了刚体等,也激活了碰撞等等,运行时候总是不能触发OnTriggerEnter,无奈打不了飞机。后来发现是子弹、敌机、主角战机三游戏体的position里y不一样导致的!虽是一个简单的错误,可能很多时候都没注意导致小有纠结!所以这里注意下咯~

就先分享以上内容......

结束语:

简单的一个游戏,这里涉及到unity制作游戏的很多基础内容,包括unity编辑器基本使用、资源管理、编写控制脚本、添加各种组件、声音、使用物理功能等等,还有碰撞、prefab等等。除了上面说的扩展,我们还可以为这个游戏添加更多细节要素,更好的流程体验!

用Unity快速开发太空飞机大战游戏实战经验分享(上)相关推荐

  1. 【Python飞机大战游戏实战+笔记】黑马程序员Python教程项目实战记录【超详细】

    博主在哔哩哔哩上学习了黑马程序员的python教程,并且完成了老师讲的项目实战,为了巩固知识点通过这篇博客来记录一下. 目录 1. 创建python项目+pygame模块下载 1.1 创建项目 1.2 ...

  2. python飞机大战功能模块图_python pygame实现飞机大战游戏

    1.引言 1.1 项目背景 python是一种跨平台的计算机程序设计语言.是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.最初被设计用于编写自动化脚本(Shell),随着版本的不断更新 ...

  3. Python+pygame飞机大战游戏

    转载自IIronMan 的博客 Python:飞机大战游戏1:前期准备 Python:飞机大战游戏2:pygame 快速入门 Python:飞机大战游戏3:框架搭建 Python:飞机大战游戏4:背景 ...

  4. Java实现飞机大战游戏思路

    这两天跟着视频的老师做了一遍飞机大战游戏,下面分享一下自己的思路,当作让自己复习一遍了哈哈哈~ ---------------------------------------------------- ...

  5. 鸿蒙开发实例 | ArkUI JS飞机大战游戏开发

    本篇介绍使用ArkUI JS框架开发一款基于鸿蒙操作系统的飞机大战游戏.这款飞机大战游戏是在普通单机游戏的基础上添加了鸿蒙操作系统分布式支持,使游戏可以同时使用多台鸿蒙操作系统设备,为游戏玩家提供分布 ...

  6. unity太空飞机射击游戏

    unity太空飞机射击游戏 有分数和生命值,飞机可以对其他飞行物进行射击,分数提高后飞机可以升级,具体情况如下图: 点我下载资源

  7. 以java语言为工具的粗糙的飞机大战游戏的开发与实现

    以java语言为工具的粗糙的飞机大战游戏的开发与实现 第一步,导入外部图片的素材库 第二步,构建窗体和面板 第三步,在GamePanel上面构建背景图画 第四步,构建英雄机和敌人的机器,支援机器之类( ...

  8. 基于Pygame开发的最完美的飞机大战游戏

    基于Pygame开发的最完美的飞机大战游戏 后期会给大家上源码,以及完整的实现思路.

  9. 飞机大战游戏开发记录(Java)

    一.项目简述: 利用swing图形界面实现飞机大战游戏,利用面向对象思想编程,加入线程,io流,集合等核心api技术,飞机大战游戏包含玩家发射子弹,不同敌机的出现,敌机打中后生成道具,添加子弹和爆炸音 ...

最新文章

  1. Freebsd下如何安装配置ssh
  2. Mac的控制台命令行报错:command not found
  3. WP8.1学习系列(第八章)——透视Pivot设计指南
  4. hive 自定义元数据表_Hive分区表和桶表的使用
  5. java8 javafx_Java8中的外观(JavaFX8)
  6. mysql datetime 后面带了很多0_面试官:MySQL 表设计要注意什么?
  7. 局域网linux唤醒windows,局域网唤醒 (WOL - Wake on LAN) | 远程启动计算机- ManageEngine OpUtils...
  8. 探讨:软件厂商Kaseya事件是不是软件供应链攻击?
  9. 什么叫做支路_家庭电路用什么开关?不同的开关有什么用?主开关用漏保更好吗?...
  10. Vuex初级入门及简单案例
  11. clover写入efi_Clover EFI bootloader for Mac(四叶草启动引导工具)
  12. win7 搭建sip服务器,使用安卓手机测试voip
  13. 什么职业的人适合考PMP?(含PMP资料)
  14. 3dmax 导出 fbx文件, 模型 到Unity中 贴图丢失
  15. Separating Axis Theorem(SAT)
  16. 海思Hi3531DV100开发环境搭建
  17. 金蝶kis修改服务器,金蝶kis 修改服务器地址
  18. Android 多平台AR SDK 集成使用
  19. java兔子繁殖_兔子繁衍问题 (考虑死亡)
  20. C语言判断第几天(最简版)

热门文章

  1. 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘
  2. matlab中转置和裁剪,对Matlab中共轭、转置和共轭装置的区别说明
  3. 一对多分页查询mysql编写_一对多分页的SQL到底应该怎么写?
  4. 计算机视觉摔倒检测,基于计算机视觉的室内跌倒检测
  5. 哈夫曼编码的非树节点形式实现
  6. CF1000G Two-Paths
  7. SQL语句中的select高级用法
  8. python中进程池的应用
  9. 函数①函数声明与表达式
  10. Python 3.X 要使用urllib.request 来抓取网络资源。转