教程来源于: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. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  2. Servlet+jsp的分页案例

    查询的分页,在web中经常用到.一般,分页要维护的信息很多,我们把这些相关的信息,分装到一个类中,PageBean.具体如下: package cn.itcast.utils; import java ...

  3. windows phone 8.1开发:socket通信聊天

    本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...

  4. VAO VBO IBO大乱炖

    最近对程序中绘制卡顿的问题忍无可忍,终于决定下手处理了.程序涉及的绘制比较多,除了点.线.三角形.多边形.圆柱体之外,还有自组格式模型.开始想全部采用显示列表优化,毕竟效率最高,虽然显示列表存在编译之 ...

  5. 如何用photoshop把一张图片分割成几张图片呢?

    今天情人节,祝大家节日快乐!朋友发来一张照片,我发现这张照片是几张照片组合起来的,是不是感觉每一张都是萌萌哒呢?为了体现单张的独特性,现在我要把它切分成单张,使用Photoshop CS5该怎么弄呢? ...

  6. [TPYBoard - Micropython 之会python就能做硬件 9] 五分种学会用TPYBoard V102 制作避障小车(升级版)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 感谢山东萝卜电子科技公司授权   一.实验器材 1.TPYboard V102板 ...

  7. React Native 之 数据持久化

    前言 因为 实战项目系列 涉及到数据持久化,这边就来补充一下. 如本文有错或理解偏差欢迎联系我,会尽快改正更新! 如有什么问题,也可直接通过邮箱 277511806@qq.com 联系我. demo链 ...

  8. 用Stax方式处理xml

    1.读取xml文件,首先用类加载器加载项目目录下的xml文件,从XMLInputFactory创建我所需要的XMLStreamReader,即得到了xml文件.根据XMLStreamConstant ...

  9. JSTL标签用法 详解(转)

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  10. 【Egret】Lakeshore 使用中的一些疑难解决技巧!

    用Lakeshore 1.2.1版本发布的html,会出现一些用户不想要的东西,下面讲讲如何去掉: 一.问题:游戏或者动画在PC端也能跟随游览器自适应. 解决方法:①找到发布文件下的  egret_l ...