基于Unity3d的跨平台3D生存游戏设计与开发_第1页
基于Unity3d的跨平台3D生存游戏设计与开发_第2页
基于Unity3d的跨平台3D生存游戏设计与开发_第3页
基于Unity3d的跨平台3D生存游戏设计与开发_第4页
基于Unity3d的跨平台3D生存游戏设计与开发_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引言1.1论文的选题背景“基于Unity3D的跨平台3D生存游戏设计与开发”是一款以Unity3D为平台开发的FPS类游戏,目前市面上的游戏种类最受玩家欢迎的有FPS游戏(穿越火线、CS)和竞技游戏(dota、英雄联盟)这些游戏每天都有数十万玩家在线对战,因此作品选择了FPS射击游戏作为游戏类型,同时现在的生存游戏也是大热,在steam(全球最大的在线游戏售卖平台)热卖的前几名最近被生存游戏所占据,dayz、H1N1、sevendaystodie这些游戏都是什么受玩家好评,游戏也在不停的进行更新,因此本作选择了末日主题环境。游戏设定是核战争幸存下来的士兵为了谋求生存,参与战斗获得生存物资,游戏随者玩家游戏进度会有不同的游戏地图供玩家探索,同时具有攻击性的丧尸数量和种类也会增加,增加了游戏的难度,为了使玩家更多的体验游戏魅力,游戏设置了5个生命值,5次生命值都失去之后游戏重新开始,每次受到攻击之后会降低血量,主要玩法是操控游戏中的人物在末世地图中存活尽量长的时间,通过消灭丧尸来获取积分,直至游戏人物血量到零时游戏结束,最后在游戏的积分系统中进行排名。在游戏中加入了特别的北京音乐,这种音乐使低沉的,低沉的音乐有助于渲染游戏的主题气氛,让玩家更加有强烈的代入感。根据Unity官方在8月公布的报告:Unity引擎占据全功能游戏引擎市场45%的份额。Unity全球用户已经超过330万人,每月活跃用户数高达60万。全世界有6亿的玩家在玩使用Unity引擎制作的游戏,用Unity创造的应用和游戏目前的累计下载量达到了87亿次。Unity中国区在3D手机游戏市场的占有率已经达到75%,超越日本成为世界第一。也就是说在最畅销的前100款3D手机游戏中,平均每10款就有7.5款是使用Unity引擎制作。Unity目前的开发者注册人数已经超过330万,在今年的4月份,中国区的开发者数量已经超越美国,成为全球第一。Unity的每月全球活跃用户超过60万。中国区每个月Unity编辑器被使用的次数总和高达180万次,居全球首位。美国以150万次使用居全球第二。从电影的角度,3D也延展着游戏。Unity现在在游戏行业,通过用我们的工具创造出游戏的内容,其实我们是市场的领导者。这家公司11年的历史,让好多款游戏变成了3D款,同时因为《阿凡达》成就影视行业,3D眼镜有一个缺陷,第一不能跟电影互动,第二成本投入比较大。那么游戏是互动性的,从端游、页游到手游,游戏本身是非常互动性的,但游戏还是1跟1的交互环境。怎么打通这两个行业,现在市场上还在观摩,但是我们相信通过Unity的技术,能有实力能把影视制作场景带到游戏互动的角度,把两个因素结合在一起。我们在全球有30万开发者,我们通过互联网的方式把300万开发者的资源正和岛一起变成了线上最大的开发者商城,因为这些资源的分享可以让更多的开发者降低门槛,开发他的内容。现在国内的开发者已经是全球的四分之一,所以我们也励志要最好的支持国内的开发者。简单介绍一下Unity8块业务:技术支持、开发插件、教育认证、发行服务、基金孵化、行业解决方案。好多开发者,创业者,一年多前找到我说:你能在技术上帮我,但你能在实际情况下,比如说资金、物业、房子来帮助我,所以我们跟普陀区合作,希望通过园区物业支持,再加上Unity基金支持,可以支持到国内开发者。Unity大中华区致力于为开发者提供一站式服务,从学习开发技能到游戏及应用的开发到游戏及应用的发行,甚至对游戏对应用运营支持的全方位服务,进一步扩大中国开发的数量和行业影响力。1.2论文所做的工作深入了解游戏设计与开发相关领域的知识基础的3DMAX使用熟练c#、JavaScript语言场景搭建能力的掌握FPS游戏侧重点的强化具备初步的阅读和理解相关中英文文献的能力游戏流程的设计游戏动画设计游戏关卡设计游戏内容设计游戏走向设计游戏可玩性设计发布游戏2可行性分析2.1市场可行性目前最火的两个引擎一个是cocos2d-x另外一个就是Unity3D。这俩个游戏引擎都各有特色。Cscso2d-x主要开发2D游戏,它的编程语言为C++,这种语言的编译时间很长,工作量变得很大。Unity3D可以开发2D游戏也可以开发3D游戏游戏编辑器主要是5大块分别是,Hierarchy、Project、Console、Inspector、Sence,这五大块面板组成了开发主体,相对于Cocos2d它更加的亲切,开发编程过程中代码大两室C#和JavaScript这俩种语言,它们的优点是编译时间短速度快,学习简单,而且Unity3D由于他的免费性,有大量的开发公司和个人使用这款软件,网络上有很多现成的教学和资源可以用来学习,最后一点是Unity3D可以发布多个平台,简洁而又方便了多次开发多个版本,因此选择Unity3D开发势在必行。在一个末日城镇的场景之中,的玩家控制的角色瑞恩通过键盘的WASD等键位控制移动,通过鼠标控制视角,左键为射击,通过射击丧尸尸来保全自己的生命,丧尸是固定时间段刷新的,根据每次击杀的时间来计算下次尸潮的数量,每次在击杀完尸潮之后,在保证自己安全的前提下,可以探索城镇,获取武器、弹药等补给品,整体设计在之后可能会出现可交互的物品,理想的游戏是Minecraft或者sevendaystodie这样的自由度特别高的游戏,不需要设计一个固定的路线来告诉玩家怎么去玩,让玩家发现这个游戏的高自由度,喜欢做什么就做什么,这是本游戏的乐趣。在现在游戏市场中中,主要分为手机平台游戏(ios、android)、pc客平台游戏(客户端游戏、网页游戏)、以及专用游戏设备(xbox、ps4),大部分比较火的游戏都会分别开发几个版本以适用于各种平台,这种开发方式无疑是很耗费时间和精力的,使用Unity3D开发的游戏可跨平台的使用。现今市场上最为热火的游戏是第一视角的生存游戏,比如Minecraft、星露谷物语…这些开放性世界的游戏,一面市就获得了不凡的市场反应,玩家都对于其有很高的评价。因此决定做一款此类型的游戏。2.2技术可行性在技术可行性方面:Unity3D有详细的开发说明书,在开发说明书中详细的介绍了每个语句的使用方式,这样使开发少了很多困难,不用浪费大量的时间去尝试语句的使用方式,便捷了开发步骤。网络上也有很多Unity3D开发的著名小制作游戏可以用来借鉴学习。并且运用了unity提供的丰富的API资源,使用JavaScript语言使编程效率提高。并使用3DMAX进行的建模工作,完成游戏中的建筑模型,人物模型和物体模型等。本款游戏沿用了许多游戏的经典元素。如图1是给player添加特性。图1player特性2.3游戏策划其次就是总结信息着手准备写立项说明书,立项说明书中需要具备盈利方式和运营的方案这俩个关键点,把能拿出来的拿给投资人看获取投资。最后是整个项目策划的文档一定要写的完美,美术工作人员和程序员以及运营工作人员可以通过文档去了解这个项目,有助于项目的开发和人员的沟通协调。下图2为工作环节。文档游戏开发游戏策划文档游戏开发游戏策划产品创意产品创意玩家玩家游戏运营可行性分析游戏运营可行性分析图2是游戏工作环节表1人员分配开发人员主要职责游戏主策划游戏的主要负责人,负责构思整个游戏的走向和协调开发游戏,是这个开发工作中最中心的人物游戏系统策划主要负责游戏的一些系统规则的编写游戏关卡策划。负责游戏中关卡的时间、难度、通关方式的设计游戏剧情策划负责游戏任务情节的设计与编写,如ARPG游戏中主线任务和支线人物,FPS游戏中的新手教学任务,对于RPG游戏来讲他就是整个游戏的灵魂游戏脚本策划人物的攻击方式、速度移动、各个模组直接的耦合靠的就是脚本实现,它充当了游戏之中各个部分的纽带游戏数值策划责游戏中HP、MP、CD等属性值的计算设计平衡对于一个游戏来说开发流程也是重中之重,一个完整的开发流程可以使游戏开发过程更加清晰明了。如图3可行性分析可行性分析项目立项项目立项策划文档策划文档原型展示原型展示商业计划说明书技术设计文档游戏背景设定商业计划说明书技术设计文档游戏背景设定引擎编写市场宣传原画设计引擎编写市场宣传原画设计服务人员培训客户服务游戏运营及销售代码编写音效和美术脚本编写服务人员培训客户服务游戏运营及销售代码编写音效和美术脚本编写游戏测试游戏测试图3开发流程3.作品架构与人物设计3.1作品架构系统的组成是游戏内容的一部分,他的作用是明确游戏内容,如图4游戏游戏音效场景人物音效场景人物建筑模型,道具模型枪声,背景音地图,小地图建筑模型,道具模型枪声,背景音地图,小地图移动,驾驶攻击图4系统组成3.2角色移动脚本系统是三维立体游戏开发的组成部分之一,相对于人体来说就是人类的大脑负责行动和思考,脚本系统是游戏之中各部分之间的强力齿轮,它存在于整个游戏中相当于人类的骨骼,如果人类没有骨骼那么他将无法行走、活动,游戏没有脚本就会使游戏无法正确的运行。当脚本被写好之后,它会运行于虚拟机之中,执行结果是由虚拟机打包发送给资源文件进行执行.游戏在编写完脚本之后,当游戏出现了运行错误,只需要查看、更改游戏脚本的逻辑性,不需要整个的拆分游戏检查错误,这通过这种方式把各部分模块化,游戏的开发更加的清晰明了高效率。每当游戏之后更新新的武器、车辆、装备、…这些资源的时候,只需要重新添加资源素材就可以,不需要对游戏的整体来进行改变。本游戏代码使用JavaScript编写,Unity3D支持C#和JavaScript俩中,相比来说JavaScript更加的简洁,可以提高开发效率,因此选用了JavaScript进行开发,编程之中调用了大量的Unity自带API,这些API从unity自带的说明书之中可以找到,由于是全英文的阅读方面有些难,旧版本的API有些被废弃了,也造成了很多的不便。游戏中使用了unity的自由视角,在移动的过程中,摄像机会保持与玩家间的一定距离,然后跟随角色进行移动。在自由视角中玩家可以依照自身坐标系,向着东南西北四个方向移动,每当玩家按鼠标右键的时候,游戏世界的角色就会绕着Y轴进行相同方向相同角度的旋转。如图5代码是人物移动代码。using

UnityEngine;

using

System.Collections;

[AddComponentMenu("Game/Player")]

public

class

Player

:

Player

{

//

组件

public

Transform

m_transform;

CharacterController

m_ch;

//

角色的移动速度

float

P_movSpeed

=

5.0f;

//

重力

float

P_gravity

=

2.0f;图5游戏开发主面板3.3人物视角人物的视角切换在2D游戏之中是不存在的,在3D游戏之中一般采用欧拉角的原理进行视角的转换。游戏中欧拉角的值指的是Vector3类型的值,3个坐标值是指分别绕着他们自身的轴去绕x,y,z度。图3这段代码的意思是根据鼠标的位置来旋转物体来实现玩家对物体的观察,通过自动获取输入轴的办法,可以快速获得鼠标移动的方向,然后实现对于物体的旋转控制。在Unity3D中可以通过Edit->ProjectSetting->Input这样的步骤来查看程序中的坐标轴名称.所以,这个值最直观的展现形式是可以允许直接用一个三维向量的形式来修改一个物体的角度.在unity中可以用maincamera来表示玩家控制的角色,通过对欧拉角的运用,结合脚本来实现场景内人物的视角转换。在游戏中可以通过鼠标的移动来观察周围的环境。图6人物视角原理。图7是人物视角物体空间坐标物体空间坐标 Model矩阵裁剪空间坐标世界坐标裁剪空间坐标世界坐标照相机坐标照相机坐标View矩阵projection矩阵

图6视角原理

Transform

m_camTransform;

//

摄像机旋转的角度

Vector3

m_camRot;

//

摄像机的高度

float

m_camHeight

=

1.7f;

//

生命值

public

int

m_life

=

5;

void

Control()

{

//获取鼠标移动的距离

float

rh

=

Input.GetAxis("Mouse

X");

float

rv

=

Input.GetAxis("Mouse

Y");

//

旋转摄像机

m_camRot.x

-=

rv;

m_camRot.y

+=

rh;

m_camTransform.eulerAngles

=

m_camRot;

//

使玩家控制的角色的面向方向与摄像机保持一致

Vector3

camrot

=

m_camTransform.eulerAngles;

camrot.x

=

0;

camrot.z

=

0;

m_transform.eulerAngles

=

camrot;

float

xm

=

0,

ym

=

0,

zm

=

0;

//

重力运动

ym

-=

m_gravity*Time.deltaTime;

//

上下左右运动图7人物视角3.4人物攻击人物的射击对于FPS游戏是重中之重,所有著名的FPS游戏都是拥有完美的射击判定的,Unity3D建立射击系统比较方便,编写脚本完成射击的基本脚本之后,可以调节射击的声音,弹道,特效…这些效果将使游戏更加丰满。游戏通过WASD四个按键进行移动,空格键是跳跃,鼠标左键射击,R键换子弹,这些便捷的操作方式是搬用了现在大多FPS游戏的射击套路,以求让玩家更快的投入游戏之中,而不是纠结在操作教学上,人物的攻击采用探针方式,每次射击之后会判定是否攻击到丧尸,若攻击到,丧尸的血量会减少,子弹减少。若没有攻击到,丧尸血量不减少,子弹减少。这是射击脚本的一部分:if(Input.GetButtonDown(“Fire1”))首先然后要检测玩家是否按了开火键,“左键”映射的是鼠标左键和当前配置的键盘上的按键(可以通过主菜单栏的Editor>ProjectSettings>Input设定){varinstantiatedProjectile:Rigidbody=Instantiate(projectile,transform.position,transform.rotation);子弹是在现实中是有物理性质的,因此在游戏中赋予它Rigibody特性,若果要用Unity3D产生一个新的物体,需要用到一个函数Instantiate,它具有一些特殊的参数支持。其中的具体运用方法可以参考开发手册,我们把这几个参数设置好,那么就可以测试游戏的射击情况了,这几个参数是物体本身、物体的空间位置还有物体的旋转特性,发射的物体可以自己选择,也可通过脚本去选择,开发的过程中,选择了最普通的枪击效果,因此在实现的时候,只能看到很简单的枪击效果,如果想要更好的效果可以通过参数的设计来更新新的效果,这是极其方便的,脚本需要关联到枪械上,这样可以使枪被赋予游戏数值,实现了武器的发射情况。instantiatedProjectile.Vellocity=transform.TransformDirection(Vector3(0,0,speed));//枪口transform

Transform

m_muzzlepoint;

//

射击

public

LayerMask

m_layer;

//

粒子效果

public

Transform

m_fx;

//

射击音效

public

AudioClip

m_audio;

//

射击间隔时间

float

m_shootTimer

=

0;

//

Use

this

for

initialization

void

Start

()

{

//

获取组件

m_transform

=

this.transform;

m_ch

=

this.GetComponent<CharacterController>();

//

获取摄像机

m_camTransform

=

Camera.main.transform;

//

设置摄像机初始

Vector3

pos

=

m_transform.position;

pos.y

+=

m_camHeight;

m_camTransform.position

=

pos;

m_camTransform.rotation

=

m_transform.rotation;

m_camRot

=

m_camTransform.eulerAngles;

Screen.lockCursor

=

true;

//

查找muzzlepoint3.5AI设计游戏之中的AI(非玩家之外的景观、丧尸…)对于游戏很重要游戏的AI设计有俩种,第一种是在固定的位置循环走动如果主角在丧尸为半径的2的范围内或者被攻击会主动攻击主角,第二种是每隔5分钟会有一定量的丧尸刷新在主角的附近,对主角进行攻击,攻击量的大小会随着游戏的进度进行加强。为了更好地完成游戏的开发。针对游戏本身需求,和市场需求,面向动作的人工智能是必不可少的,设计的AI人物有俩种控制方式,第一种是被动控制,当他在没有遇到触发条件之前保持的固定游走或静止站立。第二种是面对触发条件之后才去的措施,一般情况下,作为丧尸在检测到附近的玩家,或者遭受玩家攻击的时候,攻击玩家这种主动方式就会代替被动控制这种逻辑方式。如图图8AI站位设计。图8AI站位设计

public

void

OnDeath()

{

//更新丧尸数量

m_spawn.m_enemyCount--;

//

加100分

GameManager.Instance.SetScore(100);

//

销毁

Destroy(this.gameObject);

}

//

Update

is

called

once

per

frame

void

Update

()

{

//

的角色生命为0停止

if

(m_player.m_life

<=

0)

return;

//

获取当前动画状态

AnimatorStateInfo

stateInfo

=

m_ani.GetCurrentAnimatorStateInfo(0);

//

如果处于待机状态

if

(stateIHash

==

Animator.StringToHash("Base

Layer.idle")

&&

!m_ani.IsInTransition(0))

{

m_ani.SetBool("idle",

false);

//

待机一定时间

m_timer

-=

Time.deltaTime;

if

(m_timer

>

0)

return;表3AI设定参数可输入的条件种类备注怪物智能被动攻击主动攻击有条件的主动攻击可重复选择种类普通丧尸BOSS无技能暂无暂无逃跑与否不逃跑不逃跑怪物生成每隔5分钟会有怪物群刷新随着时间的流逝丧尸数量和质量都会增加。丧尸生成using

UnityEngine;

using

System.Collections;

[AddComponentMenu("Game/EnemySpawn")]

public

class

EnemySpawn

:

MonoBehaviour

{

//

丧尸的Prefab

public

Transform

m_enemy;

//生成的丧尸数量

public

int

m_enemyCount

=

0;

//

丧尸的最大生成数量

public

int

m_maxEnemy

=

3;

//

生成丧尸的时间间隔图10丧尸模型4模型的设计4.1材质的选择游戏之中运用了大量的材质包和道具包,拥有种类繁多的道具材料,这些道具可以给它加上特性,如物理特性刚体,碰撞等特性,这些特性可以使物体受到重力影响,实现拟真的效果。Unity3D引入了一种叫材质球的功能组件,材质包的创建是在一个球形的材质球中加各种的颜色,,在模型上把模型球拖入模型位置上,它会自动给模型添加上材质,材质颜色的选择是一项巨大的工作,根据选择的游戏主题,选择了暗色系的材质,模型上都是破败的建筑、车辆…这样更加的真实,有助有游戏的整体效果涂材质球的使用,材质球的使用大大方便了建模的工序,建模的工作大大减少,就像Photoshop中的油漆桶工具一样,只要一点击,整个图都是该种颜色。市面上大部分的游戏开发都用到了该种功能,它对于开发团队和公司的重要意义是,减少了美工团队的工作量,并且还节省了游戏制作的周期长度、公司的开发费用也减少了。如图11是材质包。图11物体材质4.2游戏场景建造建模软件的选择是需要建模的开发中特别重要的,3DMAX功能特别强大,它的全称是3DStudioMax,它在这以前是在DOS系统下的3DSTUdio这个系列的软件,DISCREET公司开发了这款软件,它是一款如MAYA般强大三维渲染制作软件,被游戏公司大量的使用,同时它在影视制作中也大放异彩,它通过它的动画制作能力,被各大影业公司使用,如环球影业、索尼影业等,这些公司中有点使用它做动画CG,有的是给电影加特效,如绝地武士、星球大战…这些大作中都运用了3DMAX这款软件。它的图像分割技术及其的优秀,本作游戏的建模大量的使用3DMAX来进行建模,开发过程中学习了大量的知识,最后制作出一些粗糙的建筑模型。使用该软件把需求的人物制作为素材,以供游戏使用,其中每个部位的骨骼都要精准,才能使最后的人物行动自如不会产生问题。游戏的地形也需要进行精心的设计才能使游戏更加的丰满。制作一个基本的地形场景,需要构造一个地形图,再给地形图上贴上材质,再次之后烘焙会使画面质量更加好看。3DMX建模完成后可导出3ds格式的文件,导出的文件可被unity3d识别,游戏场景对于一个游戏来说至关重要,FPS生存游戏强调的生存,因此营造了一个阴沉、昏暗的游戏世界,在这个游戏中玩家控制的角色在军事基地中,周围围绕了一圈的铁皮围栏,在角落里是一些瞭望塔,玩家控制的角色周围是一圈的建筑模型,被贴上了破败的材质,还有一些家具,充分营造了一个末日环境,在军营之外是更加广阔的世界。如图12所示。图12全局地图4.3特殊音效游戏声音会使玩家更有沉浸感,。在游戏中背景音乐是一定要有的,一方面可以增加游戏可玩性,让用户可以持续玩下去;另一方面增加游戏真实感,本作中游戏全局拥有背景音乐,在进入特殊房间内的时候,会有特殊房间音效,营造一个恐怖、压抑的环境,游戏角色也拥有独立的枪声和脚步声音。本作中添加了大量的音效元素,在不同的天气状况下,会有不同背景的声音,比如在下雨天,会有下雨的音效。Unity3D支持多种格式的音效,比如mp3格式和wma格式,这些格式在网络上有很多素材,但是很多并不符合我们的需求,需要下载下来之后进行一定的剪辑制作,最后形成需要的音效。添加音效有俩个组件,一个是AudioListener它的作用是听取声音。通过这个组件可以监听,就像监视器一样,另外一个就是就相当于人的嘴巴AudioSource,这个组件是用来添加到创建的物体上的,可以是建筑场景,也可以是一个人物角色。Unity可以支持任何物体添加音乐效果。首先在hier面板上prefab预制中添加一段音频,把需要的音效作为外部变量添加到预制件中,然后添加GUI,它的作用是作为一个准心。准心的作用对于一个FPS来讲是必不可少的。创建一个相关的脚本,控制音量的出现方式,这样可以实现我们的设计预期,比如在外部环境下是音效1,进入了房价是音效2.这样的切换就是脚本实现的。Audiosource可以添加到任何物体上,这个组件可以调节声音的大小范围…效果,熟练的使用这个组件是游戏开发必备的基本素养。如图13是音效设置面板。图13音效设置varcrosshairTexture:Texture2D;varposition:Rect;functionStart(){position=Rect((Screen.with-crosshairTexture.with)/2,(Screen.height-crosshairTexture.height)/2,crosshairTexture,crosshairTexture.height);}functionOnGUI(){Gui.DrawTexture(position,crosshairTexture);}剪切好的音效素材放在游戏工程中的一个单独文件夹下,多准备几段音效以备不时之需,音效素材的好坏直接关系到游戏的整体质量,因此在游戏开发过程中把关音效是要花时间去做的,音效的素材是可以自己制作,也可从网上搜集的,但是由于可能和预期不符,后期加工是要做的,可以用Adobe的音频制作软件来制作,这款软件的功能也是特别的强大,操作方面也比较简单,本作的音效制作正是用的这款软件。如图12是音效素材。图12音效素材4.4道具模型根据游戏开发的规模、特点以及开发人员的工具、条件,本文主要利用网络贴图,釆用3DMax作为三维建模工具,利用Photoshop对采集素材进行纹理处理,将模型导入Unity中作为开发引擎,并将模型导入引擎。游戏开发构建过程中,包括使用3DMax,对下层数据进行耦合,让得原始数据和图像数据之间具有一定的关联性。物体模型使用3DMAX进行基础建模,通过对物体的雕琢、组成形成了房屋等物体,这些物体加上一些unity3d之中的特性就可以让他拥有在游戏中的特性,比如刚体,音乐等信息。图10是物体模型。游戏开发构建过程中,包括使用3DMax,对下层数据进行耦合,使得原始数据和图像数据具有一定的关联性。图13物体模型游戏采用开源三维地图作为源数据地图,游戏建筑的大小、位置、面积都是基于这张三维地图。而在地形层,区别于其他游戏场景,具有唯一性元件层基本依赖3DMax的建模方式,对各种仪器和设备进行手绘以及功能赋予,同时部分元件能够使用3DMax模型组件,在一定程度上减少了工作量。而附近区域的平面图能够完整反应其名称、关联关系而建设层主要依赖地形层的地理信息,能够比较好地模拟建筑层。如图14是房屋模型,图15是树模型。图14房屋模型图15树模型Fbx这种格式的模型广泛存在游戏制作中,Unty3D支持使用Fbx的模型,FBx导入到Unity3D中会生成相对应的材料,这些材料是做成Unity3D中各种模型的基本素材,fbx的正确使用将使工作效率得以提升,反复的学习模型的制作与布置会提高游戏背景的质量,进而提高了整个游戏的质量。游戏中的模型制作布置是基于普通FPS游戏进行设计布置的,对于功能性建筑和普通建筑都有加入,生活中的一些物体也有加入,这些物体的加入丰富了游戏生活,在以后的开发中还可以加入主角与物体的互动,比如游戏主角可以拿起杯子喝水,举起酒桶攻击丧尸…这些互动方式将丰富游戏的玩法。如图16为游戏中的轮胎。图16轮胎4.5天空盒天空盒就是unity游戏之中的天空,Unity自带了许多的天空盒,有星空、白天、夜晚、黄昏…Unity3D官方网站上发布了一些免费的天空盒子,天空盒子可以让游戏的天空变得丰富多彩,首先导入Skyboxes这个素材包,在导入之后在相对应的资源面板下可以看到相应的天空盒子素材,添加天空盒子到游戏中有俩种方式可以实现,其中一种是在编辑的渲染设定中选择添加天空盒子。另外一种是在Skyboxes材质中点选一个材质球去添加到游戏场景中,也可以实现这样的天空盒子效果。如图17是天空盒。Fog(是否启用迷雾效果)FogColor(迷雾的颜色)FogMode(迷雾模式FogDensity(迷雾浓度)LinearFogStart(线性迷雾起始距离)LinearFogEnd(线性迷雾终止距离)。SkyboxMaterial(天空盒材质)HaloStrength(光环强度)FlareStrength(光晕强度)HaloTextrue(光环贴图)SpotCookie(光斑)AmbientLight(环境光)图17天空盒5作品的实现5.1射击FPS游戏是枪战游戏,所以本作游戏中运用了大量的时间去设计,调整游戏的射击操作感游戏中所持枪械为美军制式武器M16,在游戏的其他地方也有其他的武器可以供切换选择,玩家控制的角色拥有5次生命,在被丧尸攻击后会掉血,当血量为0时,就是游戏结束时。射击僵尸将会得到分数,同时随着时间的推移,丧尸的数量和质量都会提升,每隔一个关卡的结束,会有BOSS登场,BOSS拥有更多的血量,更强的攻击,更大的攻击范围,只有挑战BOSS成功才能通过本个场景,拿到奖励。如图18所示。图18射击武器是游戏主角的必备装备,游戏中自带的是M16步枪,其他的武器会在以后的开发中逐步发布,如图19为M16。图19M16步枪5.2游戏功能建筑建筑是日常生活中很重要的一件东西,人类利用建筑抵御天气,在现实生活中建筑不仅仅是一个物体,更是一种美好生活的寄托,比如你没有房子,会有一些女孩不会考虑和你结婚。在现实中也存在着大量的功能性建筑,如东方明珠、天安门、世贸大厦…,他有的是经济功能,有的是文化功能,也有军事功能,这些功能建筑让的世界更加的丰富多彩,这某些方面也方便了生活,提高了效率。在游戏中,为了游戏的=丰富性也加入这个元素。功能性建筑是建筑的一种,它具备了建筑得特性同时也有一些特别的特殊效果,它的出现使游戏更加的多样化。本作中拥有多种功能建筑,如瞭望塔(如图20)这些功能性建筑有不同的功能,瞭望塔可以阻挡丧尸的攀爬攻击,提前预警。还有多层的居民楼也可以在里面建立自己的防御工事,获取更长时间的生存.图20瞭望塔5.3小地图小地图是指游戏右上角或者其他角落,标示着人物位置坐标的元素,小地图这种元素在游戏中被广泛的应用,无论是80后的传奇还有90后的穿越火线、魔兽、英雄联盟、极品飞车…很多的知名游戏,都具有一个庞大的世界观,在这个世界中由于他的庞大,那么它一定会有一个小地图,它的出现挽救了很多路痴,很多人因为游戏世界的庞大,最后找不到回家或者做任务的路了,那么这个时候就需要小地图了。在Unity3D中,相机是一个能够为玩家捕获信息并且显示游戏世界的组件。只有通过操纵相机,可以使得的游戏场景以更加真实和独特的方式显示出来。Unity3D中默认有一个主相机MainCamera,他是用来显示设计的游戏场景的,同时也可以在一个游戏场景中设置多个相机对象,他的位置可以不固定,可以放在任何位置,他就像的眼睛观察这个世界。通过一个相机检测另一个相机的方式实现了小地图。如图21右上角是实现的小地图。图21小地图5.4测试载具交通工具充斥在的日常生活中,他不仅使的效率更高,更使的出行方式发生了改变。现今的各种游戏也增加了一些载具功能,H1Z1、GTA5…这些大牌游戏,各种类型的游戏都加入了载具功能,游戏中可以开着飞机从天上感受这个世界,也可以开着装甲车享受碾压丧尸的快感,或者开着跑车感受风驰电掣的速度。游戏载具的加入是本作的一大亮点,本作游戏中拥有超过10种载具。如图22是一辆废弃的卡车。图22废弃的卡车5.5测试房屋游戏的精细程度要从小的细节来看,每个细节物体的每一张贴图都是游戏的用心体现。本作建筑室内也是经过大量精细的布置,拥有庞大的家具体系,游戏角色可以在屋子观看属于游戏世界的装修风格。图23室内布局5.6跨平台发布大量的游戏存在多个版本PC版本、安卓版本、XBOX、PS3…多个版本的开发对于游戏公司非常的耗时耗力,往往同样的一个游戏PC版本和其他版本之间的发布时间都大大不同,这样一方面使可能的客源流失,另外一方面增大了公司的财政支出。然而Unity3D游戏的发布很便捷,以5.3版本为例,点击file,选择buildandset,选择发布的平台,网页、PC、Android、ios…发布出来之后是可执行文件,非常的方便。这样就省去了为了在其他平台发布再去开发的时间和精力。对于个人和公司来讲都是很有用的功能。图24跨平台发布结论通过对unity3d游戏引擎的应用开发,熟悉了Unity3D开发,在游戏引擎中各个组件和脚本的基础上,按照设计的方案实现了游戏的开发,实现了场景加载和角色控制等功能。对目前游戏开发现状的开发架构和管理方式的研究,实现了一个FPS生存游戏,实现了游戏玩家控制的角色的移动、射击、物品的拾取、以及音效、场景的切换、管理。在这之中一方面体现了unity3d游戏开发平台的强大之处,另一方面也体现了活学活用的重要性。本文的游戏在世界开放性上还有所欠缺,可以创造更大的世界,更恢弘的游戏场景,游戏可玩性有待提高,丰富游戏的内容,还可以做成一个沙盒游戏,这将是一个重大的工程。参考文献1于潇翔,彭月橙,黄心渊.基于Unity3D的道具系统研究与开发.计算机科学与技术(2014年04期)2成伟,薛林福,张伟.基于Unity3D的三维地质模型网络共享实现.计算机科学与技术(2014年06期)3梁成.基于Unity3D在基本游戏框架下客户端研究与实现.开发案例(2015年25期)4张敏.基于Unity3D的游戏的设计与实现[J].计算机光盘软件与应用.2014

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论