太空大战游戏开发实例

Unity 版本: 5.3.5.f1

一. 游戏策划

操作模式:

上下左右按键, 空格发射子弹

游戏中的敌人:

(1) 初级敌人,装甲交弱,以撞击主角为主, 沿弧线飞行

(2) 高级敌人,装甲较强,可以发射子弹, 直线飞行

二.游戏场景制作

1.导入游戏所需要的美术资源

方法一:

Assets目录点击右键->show in explorer->将美术资源直接copy到Assets目录

在回到unity3d界面就可以看到相关资源

方法二:

Assets目录点击右键->import new asset->浏览选择目标资源

3.创建场景

File->new sense当前场景为level0



 双击level0 即可选定编辑

(1).创建一个平面体作为游戏背景

GameObject->3D Object->Plane

U3D中采用左手坐标系系统

坐标系相关姿势点: http://blog.gamerisker.com/archives/335.html

所以我们可以选择top视角(从上往下看),即可观察到平面

(2). 创建一个材质

assets目录右键->create->material

Transparent材质将带有alpha信息,可以设置透明度(alpha cutoff)

(3). 完成场景设定

将background拖放到创建好的plane上面即可(U3D中很多操作都可以通过拖放来完成)

(4). 创建星空背景

继续新建一个平面体,使其在刚刚星球平面体下方,在inspector->scale中可以指明X和Z方向上的长度

由于默认是1,我给2就刚好星球平面体的大小的2倍

继续创建一个材质与其绑定

完成后效果如下:

4. 场景中添加动画

(1) 选中星空图平面体,菜单栏点击Windows->animation(快捷键Ctrl+6)



 先点左上角那个小红点开始录制,然后选择curves,点击add property

出现各种颜色的线,比如Material._Main Tex_ST.w是黄色的线

拖动这个呈直线,斜率越低速度越慢(但是只会跑半边动画)

如上路效果就是星空图相对与星球向下移动

- -!这里被坑的有点惨,玩了半天才玩懂

5.设置摄像机和灯光

(1) 设置摄像机

调整好视角

a. 按鼠标中建平移视图

b. 按鼠标左键+alt键旋转视图

c. 按鼠标右键+alt键或滑动鼠标滑轮推拉视图

d. 按F键快速锁定选中目标



 调整好视角之后,在hierarchy窗口选择Main Camera,Main Camera是游戏的默认摄像机

在菜单栏选择Game Object->Align with view 使摄像机视角与当前视角保持一致.

(2).设置灯光

添加亮度

Windows->Lighting->Ambient intensity调节亮度

添加灯光

GameObject->Light->point Light

添加完毕后会出现黄色的光源范围

默认就有一个光源(看来黄色线条表示光源)

三.游戏主角设定

游戏的主角是一个太空飞船,也是我们的操作目标

1.将主角设定到场景中

将Player.fbx拖放到游戏场景, 在asset目录有个播放的小三角形图标

在光照效果下已经在星球表明形成阴影

酷炫 突然明白了U3D就像是一套物理引擎,设计好游戏场景,每个场景有不同的物理元素(GameObject)

然后写程序控制每个GameObject实现游戏逻辑

2. 编写控制代码

在assets目录下新建script目录,然后脚本目录下新建Player.cs

双击脚本VS 2013打开,U3D目录会自动生成VS的sln工程文件

将Player直接拖放到Player的Inspector窗口,即可完成脚本绑定

编写代码如下:



说明:

a.Start()函数 主要执行一些初始化操作

Update()函数 每桢执行一次, 有点像Win32GUI编程中的WM_PAINT

b. Time.deltaTime表示每桢的经过时间,那些需要每桢做增减变动的数值都需要乘上Time.deltaTime

我们的例子种速度和Time.deltaTime相乘,表示每桢移动N米距离

c. Transform组件提供的主要功能和移动,旋转,缩放游戏体有关,其中Vector3类型的参数用来表示在x,y,z3个方向上移动的距离

这个时候点击场景播放,就可以发现我们可以控制战机的移动了

U3D也识别出了Speed为1

3. 创建子弹

(1). 设定子弹体

将rocket.fbx拖放到level0场景,编写代码如下:



 设置代码组件后,我们发现子弹so~一下就消失了

(2)创建子弹prefab

prefab可以理解为可以重用的游戏体,

然后我们可以在任意场合,时间包括其他的U3D游戏中重复使用

新建一个frefabs目录,新建一个空的prefab,然后可以直接从场景中的rocket拖放到prefabs即可

同时设置prefab脚本为rocket.cs即可,原场景中的rocket可以删掉了

(3). 发射子弹

player中添加代码,注意必须是public,否则不会显示在Inspector窗口

此时Inspector窗口多了Rocket属性,将prefab的Rocket拖放到Rocket选项即可

编写子弹逻辑,0.1秒发射一次子弹

再次运行游戏,可以发射子弹了

4.创建敌人

创建敌人和创建主角差不多,直接拖动到上面即可,敌人可以复用,所以最后还是创建prefab

编写代码如下:

运行游戏,敌人开始做曲线向下运动

5. 碰撞检测

(1).为敌人添加碰撞

选中敌人,添加组件

添加Physics->Box Collider

将is Trigger勾选,使其触发状态激活

在继续添加一个刚体,所有参与物理计算的游戏体都需要一个刚体才能正常工作

Add Component->physics->rigidbody

去掉Use Gravity不受到重力影响

is kinematic 勾选使得游戏体不受到物理模拟的影响

同样为主角和子弹添加刚体和物理碰撞

(2).设置tags

Edit->Project Setting->tags and layouts

添加2个tag

在prefab中绑定tag

(3).游戏体碰撞检测

敌人代码检测逻辑:

碰撞到子弹后,根据子弹的威力递减生命值,当生命值为负数时,自动销毁

碰撞到主角,直接死亡

子弹碰撞检测

与敌人碰撞就销毁

主角碰撞检测

与不是己方子弹碰撞,都减少1点生命

(4). 游戏边界碰撞检测

在游戏下方添加一个游戏边界(一个空的游戏体),当敌人碰撞边界就销毁

设置如下

注意保证Y坐标一致,不然可能无法发生碰撞

6. 添加高级敌人

添加一个可以发射子弹的高级敌人,其方法和主角一样,只是控制交给计算机完成



 高级敌人继承于初级敌人类即可, 重载移动方式函数

Awake每次实例创建会调用一次,时机早于start函数

实例创建立即寻找当前player,每隔2秒发射一颗定向导弹

7. 声音和特效

导入音效文件和特效文件

新建一个FX文件夹->Import Package->Custom Package->*.unitypackage文件

也可以把本工程的特效声音文件导出为unitypackage文件给其他游戏使用

(1).声音播放

播放声音需要添加Audio Source组件,Add Component->Audio->Audio Source

代码中定义

将声音文件与m_shootClip绑定(U3D窗口拖放即可完成绑定)

Start中初始化Audio

调用Play相关函数即可播放声音

(2). 特效

特效的操作和声音比较相似,定义一个Transform

U3D中将特效文件和该定义字段绑定

调用Instantiate函数播放爆炸特效

8. 敌人生成器

我们可以定义一些空的GameObject来源源不断的产生敌人,道理和主角发子弹一样

把空的GameObject发射指定逻辑的敌人

创建2个prefabs,绑定不同的敌人,将prefab分布到场景的指定地点出怪即可

同时用代码控制出怪逻辑,5~10秒随机生成敌人

9. 游戏管理器

游戏信息的展示,也是在场景里面和一个空的GameObject绑定,执行相关的代码

10. 新场景的建立(游戏向导)

File->New Scene->保存为start

添加一个空gameobject->添加一个组件GUI Texture->指定一张图片

将摄像机对准图片对象

编写代码,通过LoadLevel可以载入其他场景



 

11. 发布游戏

Edit->project Setting->Player设置发布的图标,公司,产品名称等信息

设置游戏分辨率相关信息

File->Build Setting即可发布游戏, 启动游戏后程序会按列表顺便播放相应的场景

游戏运行效果

来自为知笔记(Wiz)

时间: 2024-10-14 00:59:54

太空大战游戏开发实例的相关文章

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)

在飞机大战游戏开发中遇到的问题和解决方法: 1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图: 查了很多资料,调试了很长时间,整个人都要崩溃了. 最后发现引擎中CCMenu::itemForTouch函数中有遍历子节点的行为,但是循环中没有判断子节点类型是否为CCMenuItem.如图:码,这样一来,加入到pMenu中的图片精灵被当作菜单项取了出来使用,导致报错.老版本的果然又不完善的地方,整个人都不好了...果断修改引擎里的源

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(中)

接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 1 bool PlaneWarGame::init() 2 { 3 bool bRet = false; 4 do 5 { 6 CC_BREAK_IF(! CCLayer::init()); 7 8 _size = CCDirector::sharedDirector()->getWinSize(); 9 10 // 设置触摸可用 11 this->setIsTouchEnabled

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:cocos2d-1.0.1-x-0.9.2 3.环境:vs2010 二.使用的类 1.游戏菜单界面类:PlaneWarMenu——派生自CCLayer类. 1 // 游戏菜单界面类 2 class PlaneWarMenu: public CCLayer 3 { 4 public: 5 virtual bo

微信飞机大战游戏开发

原文出自:方杰|http://fangjie.sinaapp.com/?p=366转载请注明出处 这学期上了一学期的Windows游戏开发课程,学期末的时候所以决定做一个微信飞机大战的小游戏. 不同于微信手机上的飞机大战,这是一个Win32平台下游戏.Win32项目,VS2008开发平台,利用我的老师写的TinyEngine微型游戏引擎开发. TinyEngine引擎的相关源码及介绍参见:https://github.com/JayFang1993/TinyEngine 飞机大战游戏的相关源码参

【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷跑类游戏综合运用以前学到的知识. 程序下载地址:http://yunpan.cn/cLIcJgTvq4tZS 访问密码 901f 源代码网盘地址:http://yunpan.cn/cLIc67S4nNRFY 访问密码 c139 github地址:https://github.com/XINCGer/

【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接: 第一篇:初识pygame  http://www.cnblogs.com/msxh/p/4966899.html 第二篇:pygame中的IO.数据  http://www.cnblogs.com/msxh/p/4973003.html 第三篇:pygame事件与设备轮询  http://www

运用GamePlayKit的GKEntity及GKComponent 的iOS游戏开发实例

GameplayKit是一个面向对象的框架,为构建游戏提供基础工具和技术. GameplayKit包含用于设计具有功能性,可重用架构的游戏的工具,以及用于构建和增强诸如角色移动和对手行为的游戏玩法特征的技术. GamePlayKit 我们这里主要讲GKEntity和GKComponent这二个类; GKEntity类(实体): 可以容纳很多组件的容器,根据自己的需求来加入相应的Component组件. GKComponent类(组件):代表一种功能和行为,不同的组件代表不同的功能. 实用功能:(

Java坦克大战游戏开发

本文介绍: 本文分为多个部分,间断性更新.主要涉及到 面向对象思想,Java GUI绘图,多线程,IO,数据库相关知识. 注:本文内容是整合了韩顺平老师的java项目(代码部分和韩顺平老师有不同)然后加上自己的一些思考写得,本文讲的有些累述,但有提示,如若基础扎实可以直接跳过,一部分面向仅仅学习了JavaSE的语法与面向对象的,一部分是面向已经掌握了GUI,多线程,IO,数据库相关知识的. 本人认为该项目可以很好地加深对面向对象思想的理解,加强对Java各个基础知识的巩固. 基本要求: 观看并且

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林