APP下载

基于Unity3D的手机版FPS射击游戏设计与开发

2016-03-29廖金巧

赤峰学院学报·自然科学版 2016年15期
关键词:粒子系统碰撞检测游戏

张 俊,廖金巧

(北方工业大学 计算机学院,北京 100144)

基于Unity3D的手机版FPS射击游戏设计与开发

张俊,廖金巧

(北方工业大学计算机学院,北京100144)

此文旨在介绍基于Unity3D游戏引擎的手机版第一人称的3D射击类游戏.主要研究的是游戏三维场景的设计与制作,游戏人物、游戏道具、NPC的设计与制作,以及游戏模式的设计和游戏功能的实现与完善.所涉及的关键技术有碰撞检测技术,触控技术,人工智能交互技术以及粒子系统的实现方法.这个系统搭建了一个真实的三维场景,让玩家能更容易的沉浸在游戏环境中;触控式操作让玩家的操作更加灵活多变,增加了游戏的乐趣与多变性.

Unity3D;JavaScript;FPS;碰撞检测;粒子系统

Unity3D是一款跨平台性突出,兼容性强的游戏引擎,开发人员的起点要求不高,基本的资料文档都很丰富.在射击游戏这种3D类游戏方面,Unity的应用更加广泛,市场上60%的射击游戏都是以Unity3D为平台开发的.该引擎基于特定的技术架构,实现了实时生成查看的功能,易用性高,简化了开发的流程,更便于射击类游戏的设计与开发.这篇文章针对第一人称射击游戏的设计与开发展开论述,详细地阐述了游戏中运用的关键技术.这对Unity3D游戏引擎的研究与开发有着十分重要的意义.

1 相关工作

这篇文章是以Unity为开发平台,对碰撞检测技术、触控技术、人工智能技术以及粒子系统进行研究.

碰撞检测技术的主要目的有三个:检测模型之间是否发生了碰撞,反馈出发生或即将发生碰撞的部位,动态的查询模型之间的距离.进而针对碰撞后的反馈进行针对性的动作.碰撞检测技术广泛应用于各种系统中,比如时下比较流行的游戏英雄联盟和守望先锋,都离不开碰撞检测算法.

触控技术是最近几年兴起的一项技术,伴随着出现的是触屏类电子产品.是一项脱离键盘输入,直接接收用户手指触摸的信息进行实时反馈的技术.是当下信息接收的一项潮流技术,更便于用户与电子产品进行交互.2004年,进入21世纪,触屏手机伴随着触控技术的出现而普遍流行,诺基亚Symbian系统手机、微软Windows Mobile以及索尼爱立信UIQ平台手机在此浪潮中推波助澜,使得触控技术日趋成熟与完善.

2 游戏的开发流程

任何一个游戏的设计与开发都需要进行策划和需求分析,为游戏的制作理清一条清晰的主线,这样才能在接下来的工作中有条不紊地进行开发.

游戏开发一般分为创意管理,撰写草案,市场分析,需求分析这四步.在这里着重介绍下需求分析.它主要分为三个部分:美工需求,程序需求和策划需求.顾名思义,美工需求就是游戏UI的一切组件,比如人物角色,NPC,人物动画,游戏场景,游戏的各种界面,粒子特效等;程序需求也就是游戏的功能需求,包括地图编辑器和粒子编辑器的各种功能需求,实现游戏各种功能的函数、算法、数据、碰撞检测、AI等方面的需求;策划需求作为游戏制作的总指导,是一个游戏正常运行开发流程的关键部分,包括剧本的设计和游戏开发每个阶段进行的时间安排和具体流程.

2.1游戏策划

从游戏性来说,射击游戏是非常适合手机玩家的高粘度产品,近几年已有不少类似产品出现在市场上,其中很多都非常成功.我们的游戏是模仿市场上已有的F PS类射机游戏进行设计,在一些细节上进行了调整和优化.首先,运用3D建模技术和次世代贴图技术搭建一个真实的游戏场景,让玩家更容易沉浸到游戏中去,增强了用户的虚拟性体验;其次,玩家可以自主选择攻击模式而且游戏中弹药没有限制,全靠玩家的操作能力击杀NPC进行过关,增加了玩家对游戏的粘度;最后,游戏的盈利模式是通过与广告商合作,在玩家失败或者死亡时可以通过观看一段广告视频来继续游戏.

2.2游戏美术

一个好的游戏离不开精良的美术内容.所谓游戏美术就是游戏中出现的可视化内容,包括游戏UI界面,游戏场景及角色等,美术决定游戏的画面风格走向,是游戏设计与开发过程中不可或缺的重要组成部分.具体来说本款作品的游戏美术需要完成UI界面的设计、游戏场景和道具的设计与制作、人物角色和NPC形象的设计和建模以及动画的制作等.

2.3关键技术

上文介绍了美术制作的部分内容,现在介绍一下程序设计部分.程序需求是一个游戏的核心,是实现预期效果的必要保证.即用一些脚本和代码将美工设计的好的各种素材联系起来并进行交互.程序需求在游戏设计开发过程中十分重要,决定着一个游戏现在运行过程中是否能完美还原策划的预期效果和运行时是否流畅.

这款手机版的F PS射击游戏中涉及到多种人工智能技术,NPC,主角,场景中障碍物,道具等一些列对象,需要通过脚本来控制个对象之间的关系以及互动.当前介绍碰撞检测技术,粒子系统,触控技术,交互技术.

2.3.1碰撞检测技术

碰撞检测技术几乎是所有游戏中必须要用到的技术,玩家与地面、障碍物、NPC的交互都是在碰撞检测技术的基础上来实现的.但是碰撞检测技术有各种不同的算法,好的算法可以大大增强碰撞的真实性并减少计算机的计算时间.此系统在Unity3D中用如下Java Script脚本进行碰撞检测:

functionOnCollision Enter(obj:Collision){

Debug.Log("Collider:"+obj.collider.name+"game Object: "+o b j.game Object.name);

Action;

将如上的碰撞检测的OnCollision Enter函数绑定到对象obj上,当这个物体被其他物体碰撞时函数被调用.

碰撞检测的算法有很多种,时间预测算法、距离预测算法、静态检测算法、距离计算算法等,其中,距离计算算法计算量比较大但是精确度高,更具有真实性.此游戏采用的就是距离计算的算法.当物体之间发生碰撞以后,会出现什么样的效果和做出什么反应都是调用这个函数.此游戏中用到这个函数的主要是NPC碰撞到主角以后会触发NPC的动画效果进行攻击;主角的武器道具碰撞到NPC以后,NPC的血量降低;主角和NPC碰撞到墙面等障碍物不让其穿过;手榴弹扔出以后碰到地面或者NPC会触发粒子系统的爆炸的粒子效果并对范围内的NPC造成伤害降低血量等.

2.3.2粒子系统

粒子系统是为了模拟一些范围性的难以用传统渲染技术达到的一些特殊的效果,是游戏中常用的基本功能.

为了增加游戏场景的真实感,增强用户体验,需要用到粒子系统.粒子系统可以达到其他传统的渲染技术达不到的真实效果.常用粒子系统模拟火,烟雾.流星尾迹等.这里,我们使用粒子系统来模拟场景中的硝烟和玩家使用的炸弹的爆炸效果.

此游戏中的粒子系统使用主要是战场的硝烟和扔出的手榴弹爆炸的效果,在产生硝烟的地方创立一个游戏对象并隐藏,然后给该对象添加一个粒子系统,调节出硝烟的粒子系统参数和粒子产生的速度和频率即可模拟出战场的硝烟的粒子效果;主角扔出的手榴弹的爆炸效果就相对于小硝烟复杂一点,需要制作一个手榴弹的prefab,然后在该prefab上添加一个粒子系统组件,然后调节好爆炸的粒子效果参数.但是,手榴弹需要在一定条件下才会触发爆炸特效所以需要添加下面的碰撞检测代码来控制粒子系统

functionOnCollision Enter(obj:Collision){

Start(ParticleSystem);

2.3.3触控技术

此游戏是手机版的F PS射击游戏,现阶段的手机市场主要以触屏手机为主.所以为了迎合市场的需求,在系统中加入触控技术以实现玩家触屏控制角色进行游戏.利用射线检测技术,将玩家手指触碰点转化为游戏虚拟的三维场景中的具体坐标点,让玩家与虚拟场景中的对象进行交互.手机屏幕左下角(0,0),右上角为(Screen.width,Screen.height);通过Unity 中的函数Input.GetTouch (0).positon获取点击的位置,将玩家手指触碰的点的屏幕坐标转化为虚拟三维场景中的三维坐标,即从屏幕坐标点发射一条射线,朝向屏幕内部的游戏世界,在unity中实现方法是:

if (Physics.Raycast (transform.position,Vector3.right,outhit,100, mask.value)){

Debug.DrawLine(transform.position,hit.point,Color.red,1);

2.3.4交互技术

一款游戏若是缺少交互就无法生存,所以交互技术是任何游戏的核心技术.这款游戏的交互主要包括玩家和游戏中的主角,主角与NPC,主角与三维场景,NPC与三维场景.

玩家与游戏中的主角的交互式通过触控技术,玩家在手机屏幕上的信息实时反馈到虚拟的三维场景中,使场景中的虚拟的角色进行反应:行走、跑动、射击等;主角与NPC的交互是通过碰撞检测技术来实现的,给NPC的prefab添加一个比他本身略大的一个碰撞盒,当碰撞盒和主角发生碰撞反应时就触发NPC的攻击动作,并降低主角的血量.主角可以是用枪、刀和手榴弹三种武器,当枪发射的子弹或者刀的碰撞盒与NPC发生碰撞的时候会触发NPC的掉血机制来消灭NPC;手榴弹则先检测是否与场景中的地面或者NPC发生碰撞,若碰撞则触发其上的粒子特效并且在手榴弹的爆炸范围内对NPC造成伤害降低其血量;主角与三维场景和NPC与三维场景的交互都是通过碰撞检测技术来实现的,给场景中的地面和障碍物绑定碰撞盒,当主角或者NPC与之发生碰撞不让其穿透障碍物.

3 结束语

随着计算机技术的日益发展,Unity3D游戏引擎越来越平民化.此篇文章在对Unity3D游戏引擎精心研究的基础上结合FPS射击类游戏的特点,通过3D建模技术和次世代贴图技术,运用碰撞检测、触控、粒子系统等算法和人工智能交互技术进行设计与开发.总结出了游戏场景构建和基本功能实现的一些方法.游戏的故事情节性不明显,游戏模式稍微单一,还需要在游戏的多元化方向进行进一步的深化研究.

〔1〕吴业红.基于3DSMax材质与贴图技术的教学探讨[J].电脑知识与技术,2009,5(36):103,112.

〔2〕伍传敏,张帅,邱锦明.基于Unity3D的FPS游戏设计与开发[J].三明学院学报,2012,29(2):35-40.

〔3〕SchachSR.软件工程面向对象和传统的方法[M].北京:机械工业出版社,2009.

〔4〕宜雨松.Unity3D开发[M].北京:人民邮电出版社,2012.6.

〔5〕华泽玺,王迎春,孙建顺.基于粒子系统的爆炸仿真研究[J].计算机科学,2012,39(4):278-281.

T P311.52

A

1673-260X(2016)08-0038-02

2016-05-12

北方工业大学2016实培计划大学生科研训练计划深化项目(XN 003-17)

猜你喜欢

粒子系统碰撞检测游戏
全新预测碰撞检测系统
利用GPU加速的粒子系统全球流场可视化系统设计与实现
基于BIM的铁路信号室外设备布置与碰撞检测方法
UE 4粒子系统与外部数据通信研究
数独游戏
疯狂的游戏
空间遥操作预测仿真快速图形碰撞检测算法
爆笑游戏
BIM技术下的某办公楼项目管线碰撞检测
第八章直接逃出游戏