源于《Unity官方实例教程 “Space Shooter”》思路分析及相应扩展
教程来源于:Unity官方实例教程 Space Shooter(一)~(五) http://www.jianshu.com/p/8cc3a2109d3b
一、经验总结
教程中步骤清晰,并且相应代码及代码思路也给出,一步步跟着走下来的话并不存在困难。对unity新手来讲,可以学到不少的东西。
1.添加GameObject存在两个标准步骤(良好习惯)
重新命名及重置Transforms
Transforms可以理解为该GameObject的位置相关参数
position为位置参数,rotation为旋转参数,scale为规模参数;重置最方便的方法便是单机右上角的小齿轮并选择reset便可得到如图数据,也就是将该GameObject重置到原点,是个良好的习惯。
2.某些模型的刚体与模型碰撞冲突问题
在添加飞船的刚体及模型碰撞后出现错误“凹多边形的mesh collider不能跟rigidbody同时启用”,经检查发现mesh collider中mesh选项中选择了飞船本身的模型,而本身的模型为凹多边形,导致不能和刚体rigidbody同时启用,教程中选择将mesh模型替换为预先加工好的模型以解决此问题

3.GameObject中主物体及子物体设置
在Hierarchy中编辑拖拽GameObject主要存在三种情况,创建主物体、成为某主物体的子物体、加入某物体inspector中参与设置。而子物体会跟随主物体进行移动、变更属性或经由脚本统一调用。如果主、子物体设置不清晰会造成很大的困难:如飞机本体player及引擎动画效果engines_player不设置为主、子物体的话,就不会同步移动,非常尴尬。

4.防止素材图片比例失调的方法
在添加图片素材后,如果按照游戏的相应要求肆意调节,则会导致图片比例失调,非常难看。而有一简单方法可以极大缓解这一情况,那就是在设置游戏内图片大小时,保留原素材图片的比例系数。如原图片的尺寸为1024x2048,那么在游戏中设置的时候只要保证x参数为y的一半,那么图片就不会发现失调或比例失真的情况了。
5.prefab的制作以及调用
制作好的GameObject可以加入prefab中,直接拖入即可制作完成,保留该GameObject的所有参数。而调用的时候只需在要用的地方直接选择就可以了;但要注意的是,在prefab修改了GameObject的相关参数将会对所有在prefab中调用了该物体的属性参数进行更改!
6.为防止游戏负担过大需要做相应的“回收”工作
在游戏的运行过程中,会由代码需要产生出越来越的且无法自我消除的GameObject,在space shooter中如爆炸的效果、飞出去的子弹等,这些GameObject在不干预的情况下会随着游戏时间越来越多,最终加大游戏负担,导致游戏卡死,因此需要编写相应代码将不断创建的GameObject发挥完作用后将其删除掉。
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class DestroyByBoundary : MonoBehaviour {
void OnTriggerExit(Collider other) {
Destroy (other.gameObject);
} }
7.物体的tag设置及代码调用
tag就是给一个物体贴上一个标签,本身就是一串代码,一些gameobject会自带其tag标签,而通常情况下我们需要对gameobject设置tag,方便寻找,而在代码中调用的时候,tag也十分重要。tag是一个关键的工具,目前我只学到了它的用途之一:“就是是用来给gameobject贴标签,方便找”。

二、教程疑问
教程中space shooter中设置的发布的平台为wed player,而我的unity中并没有该发布平台选项。有可能是我在安装的时候没有选择安装web player的发布平台,但讯问同样使用unity的同学得知,也可能是unity新版将web player平台取消了。这一点还待验证。

三、额外扩展
教程中给出了飞机的移动、子弹的发射、陨石随机连续生成及分数纪录和游戏结束的相关制作。而我们知道作为一个太空射击类游戏,该教程还留白了许多地方,特别是asset store中下载的素材中还有许多模型并未使用,因为我进行了相应的扩展。

1.添加另外两种陨石
在一种随机陨石的基础上,利用代码及模型创建另外两种陨石进入游戏。其模型大小、刷新数量及间隔时间与第一种陨石完全不同,可以有效增加游戏的乐趣及玩家游戏难度。
2.添加敌机
添加敌机进入游戏,敌机由上至下的移动速度将比陨石缓慢很多,并且会不断发射子弹干扰玩家;而在后期,敌机将可以搭载具有一定移动能力的ai,增加游戏的深度。
3.增加副武器的设定
将player的战机除了鼠标左键发射弹药外,添加右键副武器的设定,可发射具有追踪能力的导弹或大面积的散弹,可以增强玩家战机的性能,提高游戏的乐趣。
源于《Unity官方实例教程 “Space Shooter”》思路分析及相应扩展的更多相关文章
- 对《[Unity官方实例教程 秘密行动] Unity官方教程《秘密行动》(十二) 角色移动》的一些笔记和个人补充,解决角色在地形上移动时穿透问题。
这里素材全是网上找的. 教程看这里: [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(九) 角色初始设定 一.模型设置: 1.首先设置模型的动作无限循环. 不设置的话 ...
- Unity官方实例教程 Roll-a-Ball
与unity的transform组件相处的挺久了,最近项目不太忙,决定好好打下unity的基础.那么从Roll-a-Ball这个简单游戏开始吧! 1.先创建一个球体游戏对象,改名为Player,tra ...
- Unity-2017.3官方实例教程Space-Shooter(一)
由于初学Unity,写下此文作为笔记,文中难免会有疏漏,不当之处还望指正. Unity-2017.3官方实例教程Space-Shooter(二) 章节列表: 一.从Asset Store中下载资源并导 ...
- Unity-2017.3官方实例教程Space-Shooter(二)
由于初学Unity,写下此文作为笔记,文中难免会有疏漏,不当之处还望指正. Unity-2017.3官方实例教程Space-Shooter(一) 章节列表: 一.创建小行星Prefab 二.创建敌机和 ...
- Unity-2017.2官方实例教程Roll-a-ball(二)
声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/97b630a23234 上一节Unity-2017.2官方实例教程Roll ...
- Unity-2017.2官方实例教程Roll-a-ball(一)
声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/6e4b0435e30e Unity-2017.2官方实例教程Roll-a- ...
- UML实例教程 解析UML建模分析与设计
UML统一建模语言在软件开发过程中非常实用,UMl建模的分析与设计你是否熟悉,这里就通过实例向大家介绍,希望通过本文的学习,你对UML建模的分析与设计方法有一定的了解. 本节向大家介绍一下图书管理系统 ...
- Unity 官方自带的例子笔记 - Space Shooter
首先 买过一本叫 Unity3D开发的书,开篇第一个例子就是大家经常碰见的打飞机的例子,写完后我觉得不好玩.后来买了一本 Unity 官方例子说明的书,第一个例子也是打飞机,但是写完后发现蛮酷的,首先 ...
- 分享本年度最佳的15个 Photoshop 实例教程
毫无疑问,Photoshop 是任何其类型的设计相关工作的最佳工具.有这么多东西,你可以用它来设计,发挥你的想象力,一切皆有可能. 现在,几乎所有的封面图像都会用 Photoshop 来修饰. 您可能 ...
随机推荐
- MyBatis极速入门开发手册(2017-2-6更新)
前言: 本篇文章对我的学习内容做一个归纳梳理,同时也记录一些学习过程中遇上的问题及注意事项等等,可以帮助新入门的朋友们消除一些误区与盲区,希望能帮上一些正在学习的朋友们.在编写时会引用一些mybati ...
- (23)IO之打印流 PrintStream & Printwriter
PrintStream PrintStream可以接受文件和其他字节输出流,所以打印流是对普通字节输出流的增强,其中定义了很多的重载的print()和println(),方便输出各种类型的数据. Pr ...
- 移植python笔记
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 编译环境:ubuntu-14.04.1 编译器:gcc.arm-hisiv200-linux-gnueabi P ...
- C++标准库之vector(各函数及其使用全)
原创作品,转载请注明出处:http://www.cnblogs.com/shrimp-can/p/5280566.html iterator类型: iterator:到value_type的访问,va ...
- 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中
每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...
- 移动web页面支持弹性滚动的3个方案
有段时间一直折腾移动端页面弹性滚动的各种问题,做了点研究,今天做个小分享~ 传统 pc 端中,子容器高度超出父容器高度,通常使用 overflow:auto 可出现滚动条拖动显示溢出的内容,而移动we ...
- 为什么你应该抛弃Express的视图渲染引擎
Nodejs Express框架的一个被人们广为使用的特性是它的渲染引擎.Express视图渲染引擎允许Controller提供一个视图名称和视图模型对象给Express,然后返回由HTTP响应流输出 ...
- iOS面试必看经典试题分析
> **不用临时变量怎么实现两个数据的交换?** 方式一:加减法的运算方式求解new_b = a - b + b = a;new_a = a + b - a = b;一个简单的运算方式,最重要的 ...
- flume日志采集框架使用
flume日志采集框架使用 本次学习使用的全部过程均不在集群上,均在本机环境,供学习参考 先决条件: flume-ng-1.6.0-cdh5.8.3.tar 去cloudrea下载flume框架,笔 ...
- 老李分享:HTTP协议之协议头
老李分享:HTTP协议之协议头 当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含 ...