教程来源于: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”》思路分析及相应扩展的更多相关文章

  1. 对《[Unity官方实例教程 秘密行动] Unity官方教程《秘密行动》(十二) 角色移动》的一些笔记和个人补充,解决角色在地形上移动时穿透问题。

    这里素材全是网上找的. 教程看这里: [Unity官方实例教程 秘密行动] Unity官方教程<秘密行动>(九) 角色初始设定 一.模型设置: 1.首先设置模型的动作无限循环. 不设置的话 ...

  2. Unity官方实例教程 Roll-a-Ball

    与unity的transform组件相处的挺久了,最近项目不太忙,决定好好打下unity的基础.那么从Roll-a-Ball这个简单游戏开始吧! 1.先创建一个球体游戏对象,改名为Player,tra ...

  3. Unity-2017.3官方实例教程Space-Shooter(一)

    由于初学Unity,写下此文作为笔记,文中难免会有疏漏,不当之处还望指正. Unity-2017.3官方实例教程Space-Shooter(二) 章节列表: 一.从Asset Store中下载资源并导 ...

  4. Unity-2017.3官方实例教程Space-Shooter(二)

    由于初学Unity,写下此文作为笔记,文中难免会有疏漏,不当之处还望指正. Unity-2017.3官方实例教程Space-Shooter(一) 章节列表: 一.创建小行星Prefab 二.创建敌机和 ...

  5. Unity-2017.2官方实例教程Roll-a-ball(二)

    声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/97b630a23234 上一节Unity-2017.2官方实例教程Roll ...

  6. Unity-2017.2官方实例教程Roll-a-ball(一)

    声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/6e4b0435e30e Unity-2017.2官方实例教程Roll-a- ...

  7. UML实例教程 解析UML建模分析与设计

    UML统一建模语言在软件开发过程中非常实用,UMl建模的分析与设计你是否熟悉,这里就通过实例向大家介绍,希望通过本文的学习,你对UML建模的分析与设计方法有一定的了解. 本节向大家介绍一下图书管理系统 ...

  8. Unity 官方自带的例子笔记 - Space Shooter

    首先 买过一本叫 Unity3D开发的书,开篇第一个例子就是大家经常碰见的打飞机的例子,写完后我觉得不好玩.后来买了一本 Unity 官方例子说明的书,第一个例子也是打飞机,但是写完后发现蛮酷的,首先 ...

  9. 分享本年度最佳的15个 Photoshop 实例教程

    毫无疑问,Photoshop 是任何其类型的设计相关工作的最佳工具.有这么多东西,你可以用它来设计,发挥你的想象力,一切皆有可能. 现在,几乎所有的封面图像都会用 Photoshop 来修饰. 您可能 ...

随机推荐

  1. 用Visual Studio Code Debug世界上最好的语言

    前言 这阵子因缘巧合接手了一个辣鸡项目,是用世界上最好的拍黄片写的,项目基本是另一个小伙伴在撸码,我就兼职打杂和发布做点运维的工作. 然后昨天项目上了测试版之后,一用起来Error满天飞了.让小伙伴查 ...

  2. 学习一点Markdown的基本知识

    本文于2017年3月18日首发于LinkedIn,请参考链接 这个世界的进步是由一些"懒"的人推动的.今天讲的这个Markdown,其实也是因为一批厌倦了HTML的各种标签的语法, ...

  3. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  4. 开发Nagios监控passwd文件插件

    第一步:开发脚本 [root@Admin libexec]# pwd /usr/local/nagios/libexec [root@Admin libexec]# cat check_passwd ...

  5. js的几种简单排序算法及其效率实测

    function swap(arr,index1,index2){ var t = arr[index1]; arr[index1] = arr[index2]; arr[index2] = t; } ...

  6. 为什么要学Python

    人生苦短,我用python.在大学四年的本科学习中,Python是我接触过语法最简单,功能最为强大的语言,拥有众多第三方库的支持的语言.如果要选一门编程语言作为入门,建议使用Python.但是为了更加 ...

  7. JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换

    本篇博客我们就来聊一下Spring框架中的观察者模式的应用,即事件的发送与监听机制.之前我们已经剖析过观察者模式的具体实现,以及使用Swift3.0自定义过通知机制.所以本篇博客对于事件发送与监听的底 ...

  8. 【转】关于swf安全沙箱冲突:不能被本地访问

    错误提示:SWF 文件不能被本地访问 不能访问本地只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源 错误信息:SecurityError:Error #2148: SWF ...

  9. 老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊

    老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊   最近学员不断面试,不时听到令人惊喜的消息,类似应届专科毕业生获得7k月薪,小美女应聘月薪11k等等,看到学员开心的笑容 ...

  10. 《JavaScript程序设计》第2课:JS类型系统

    JS类型系统可以分为标准类型和对象类型,进一步标准类型又可以分为原始类型和引用类型,而对象类型又可以分为内置对象类型.普通对象类型.自定义对象类型. 1. 标准类型 标准类型共包括了6个分别是:und ...