基于unity3D变装系统的RPG游戏的设计与开发 .docx
摘要随着人们生活水平的提高,追求精神生活则成为必然需求,而游戏则是精神生活的一部分,伴随着第三次科技革命的到来,科技的发展进步,使众多游戏开发引擎应运而生,其中,unity3D则是一个较为流行且优秀的游戏开发引擎,有了这款开发引擎,可以满足人们玩游戏的精神生活需求。在众多游戏中,游戏可分为:角色扮演类、射击类、动作类、冒险类、休闲类、音乐类游戏等。角色扮演游戏(Role playing game),简称RPG,是一种玩家扮演某个角色在一个写实或虚构世界中活动的游戏。而RPG变装游戏则是更换玩家控制游戏人物的头发、衣服、裤子、裙子、裤袜、鞋子、手套等。通过个性化的搭配,玩家可以搭配出漂亮且喜欢的服装给游戏人物,丰富玩家的爱美需求。添加游戏战斗模块,增加游戏的刺激性和趣味性。Unity3D作为一款快速开发的引擎,我们将一起探究基于Unity3D的变装游戏的设计与开发,它是区别于2D变装游戏,是一款3D RPG变装游戏,玩家在选择好自己喜欢的服装搭配之后进入游戏,在游戏中,玩家共有3个技能,不同的技能攻击伤害是不一样的,玩家可利用技能攻击,杀死敌人,游戏攻击属性多元,绚丽的粒子特效给玩家带来刺激的体验。由于现在人们忙碌和疲惫的生活下,一款卡通人物形象的动漫风设定手法,更加受青少年喜爱,游戏屏弃杀戮、血腥、外表暴露的游戏特性,采用清新、唯美、可爱的游戏人物风格,更加适合青少年消遣。文章主要描述游戏人物的变装原理及玩法,还有游戏设计与实现以及游戏的测试。关键词:Unity3D 3D技术 变装类游戏 游戏技能AbstractWith the improvement of people's living standards, the pursuit of spiritual life has become an inevitable demand, and games are part of spiritual life. With the advent of the third technological revolution, the development of science and technology has made many game development engines come into being. Unity3D is a more popular and excellent game development engine. With this development engine, it can meet the spiritual life needs of people playing games. In many games, games can be divided into: role-playing, shooting, action, adventure, leisure, music games, etc. Role-Playing Game, or RPG for short, is a game in which a player plays a role in a realistic or fictional world. The RPG drag game replaces the characters, clothes, pants, skirts, pantyhose, shoes, and gloves of the characters the player controls. Through personalized matching, players can match beautiful and favorite costumes to the game characters, enriching the player's beauty needs. Add a game combat module to increase the excitement and fun of the game.Unity3D as a fast development engine, we will explore the design and development of the cross-dressing game based on Unity3D. It is different from the 2D cross-dressing game. It is a 3D RPG cross-dressing game. Players are choosing their favorite clothing. After the match, enter the game. In the game, the player has a total of 3 skills. Different skills attack damage is different. Players can use skills to attack, kill the enemy, the game has multiple attack attributes, and the gorgeous particle special effects bring stimulation to the player. Experience. Due to the busy and exhausted life of people nowadays, an anime style setting method for cartoon characters is more popular with teenagers. The game screen discards the game characteristics of killing, bloody, and exposed appearance, and adopts a fresh, beautiful, and lovely game character style. More suitable for young people's pastime. The article mainly describes the game characters' cross-dressing principles and gameplay, as well as game design and implementation and game testing.Key Words:Unity3D 3D Technology Crossover games Player skills目录第一章引言11.1 选题目的及意义11.2 RPG变装游戏发展历程11.3 Unity3d RPG变装游戏研究现状21.4 课题研究内容2第二章Unity3D变装游戏系统相关技术与概念32.1 Unity3D游戏引擎32.1.1 Unity3D简介32.1.2 Unity3D模块介绍32.1.3 Unity3D脚本开发基础知识42.2 3Ds MAX软件42.3 Photoshop软件42.4 Visual Studio code软件4第三章游戏策划及可行性分析53.1 游戏系统概述53.2 可行性分析53.2.1 技术可行性53.2.2 经济可行性53.2.3社会可行性53.3游戏架构设计6第四章变装系统的设计与实现74.1 变装系统的前期设计74.1.1 3DSMAX制作人物及服饰74.1.2 骨骼动画的原理84.2 变装系统的实现原理84.3 变装系统的实现步骤94.4 UI制作144.4.1 主菜单界面144.4.2 变装界面144.4.3 游戏结束界面15第五章动画系统的概念及实现165.1 动画系统介绍165.1.1 旧版动画系统与新版的区别165.1.2 模型动画导入165.2 动画系统的实现16第六章战斗系统的实现196.1 第三人称视角移动和旋转196.1.1 摄像机跟随人物移动196.1.2 缩放物体与摄像机的距离196.1.3 旋转第三人称视角206.2 鼠标点击特效及技能特效的实现216.2.1 鼠标点击播放特效216.2.2技能粒子特效的实现216.3 AI敌人的实现256.3.1 场景烘培256.3.2 敌人自动巡逻256.4 碰撞检测266.5 血量制作及实现266.6 技能伤害表276.7 玩家敌人受伤减血286.8 玩家补血306.9 按Tab键弹出换装界面306.10 敌人玩家死亡32第七章游戏测试347.1 测试环境347.2 测试用例及结果34结论35参 考 文 献36致谢37广东东软学院本科毕业设计(论文)第一章 引言1.1 选题目的及意义随着科学技术的不断进步和发展,人们生活水平的提高使个人电脑和网络得到了有效普及,各式各样的游戏也相续迸发。游戏能给人们带来什么样的生活意义?首先,游戏给人们带来的是压力的释放,现代人的快节奏生活,忙碌的生活易于产生焦虑和压力,而游戏应用的诞生给业余生活增加了生活的乐趣。 其次,RPG变装游戏是目前比较流行的游戏类型之一,一般大型游戏中都会有变装系统,这也是很多游戏获得收益的来源。使用Unity3d开发,可以让玩家对游戏人物、建筑等进行三维观看,有很好的视觉效果。RPG变装游戏可以改变玩家使用的人物形象,给游戏人物头部,身体和四肢的这些部位佩戴不同的配饰,如发型、头饰、武器、衣服、翅膀等,通过改变人物形象来提高游戏的可玩性和趣味性。通过改变人物形象,提高游戏的可玩性和趣味性。其次也可通过改变相应的配饰,折射出了玩家内心世界,也就是说玩家有一部分心理或行为是想要改变的,通过游戏可以缓解一部分想要改变又暂时不想或不能改变的焦虑。1.2 RPG变装游戏发展历程RPG是一个有着悠久历史的游戏类型,它可以追溯到公元前,因为当玩家扮演某个角色来执行某个动作时,此时游戏就可以定义为RPG游戏。20世纪70年代,随着人类社会的进步和发展,在电子游戏中存在着黑白图形的游戏界面,非常简单,但在那时候,RPG的基础框架就有了雏形,在九十年代的时候,游戏引擎的诞生,为RPG游戏的发展注入的新鲜的血液,在那之后,RPG的游戏种类出现各式各样,ARPG也是在RPG的基础之上的诞生的。RPG可以与冒险、射击等类型的游戏相结合,形成一种新的游戏模式。显然,变装游戏和RPG的结合也因此产生,例如1998年塞尔达传说:时之笛就运用了RPG与变装相结合,该游戏受到众多玩家的喜爱。直到现在,RPG变装游戏也一直受诸多玩家喜欢。1.3 Unity3d RPG变装游戏研究现状Unity3D是近年非常受欢迎的游戏开发引擎,目前科学技术高速发展,很多高科技人才选择了做Unity游戏开发行业。目前Unity3d开发人员供不应求,Unity3d游戏开发成本低,市场前景十分广阔,是游戏业界关注的一个领域。由于Unity3d人才的缺乏和社会需求量大导致了这方面人才的价值上涨,所以前景和工资也是相当乐观的,这使得Unity3d发展的越来越好。运用Unity3d开发变装游戏,人物变装系统通常模拟一个三维的虚拟变装空间,给玩家一个三维变装环境,有独立的场景、服装、饰品、道具等模拟设计,让用户在系统中个性化装扮自己,是实现网络游戏人物多样化的主要环节。在人物变装系统中可以看见,游戏服装的发展紧跟现实服装潮流,例如绝地求生游戏中的服装,游戏玩家喜欢这类服装,促使部分玩家购买现实版游戏服装。可见,游戏变装系统对游戏玩家是间接影响的,它有一定的商业价值。1.4 课题研究内容本文主要介绍一款变装游戏的设计及实现第一章:引言阐述笨课题研究目的、意义以及研究发展现状,本文的研究重点及主要内容。第二章:Unity3D变装游戏系统相关技术与概念阐述Unity3D引擎、使用软件、架构设计第三章:游戏策划及可行性分析概述游戏系统以及游戏开发的可行性分析第四章:变装系统的设计与实现阐述变装系统的前期设计、变装系统的实现第五章:动画系统的概念及实现介绍动画系统以及动画系统的实现第六章:战斗系统的实现第三人称视角移动和旋转、鼠标点击特效及技能特效的实现、AI敌人的实现、碰撞检测、血量制作与实现、技能伤害表、玩家敌人受伤减血、玩家补血、TAB键弹出换装界面、敌人玩家死亡第七章:游戏测试 测试环境、测试用例及结果第二章 Unity3D变装游戏系统相关技术与概念 2.1 Unity3D游戏引擎2.1.1 Unity3D简介Unity3D是什么?喜欢制作独立游戏的人可能已经听说过Unity,这是由Unity Technologies开发的,开发者可以很容易地创建一个多平台的游戏,其中包含3D视频游戏、建筑可视化、实时3D动画等多种交互内容,在小型开发项目中开发人员最喜爱的就是它了,虽然存在许多其他3D引擎,但是Unity3D是最简单、易上手的引擎,它是一个具有跨平台的3D游戏开发引擎,为新手提供最友好的用户体验,支持Android、ios、windows、WebGL开发,而且还支持制作VR游戏。对于专业游戏开发人员来说它是足够使用。例如武士系列、城堡勇士、蒸汽之城、绝代双骄、炉石传说、神庙逃亡等都是在Unity3D上开发的。2.1.2 Unity3D模块介绍1) Unity3D基础操作模块: (a)导航菜单:新建场景、导入导出素材、保存场景和打包游戏等。(b)工具栏:主要操作场景中对象。(c)Hierarchy视图:场景中的所有物体对象都在这里,显示物体之间的层级关系。(d)Project视图:本地的资源就存在这里,可以增加、删除资源。(e)Inspector视图:查看和修改物体属性。(f)Scene视图:展示工程项目中的物体。(g)Game视图:显示运行时的游戏制作效果。2) 物理引擎:Unity游戏物体引擎,不需要自己写代码来模拟虚拟世界中的物理效果,只需要通过几行已经写成集合的代码,3) 基于C#脚本开发:开发游戏的核心就是脚本,脚本的作用主要时控制游戏中的物体、动画、摄像机、界面等。4) GUI界面: 每个游戏都有自己独特的界面设计,例如:玩家引导、主界面等,UI界面可以处理用户交互。2.1.3 Unity3D脚本开发基础知识1) Tag标签的作用是标识,在同一类物体中,可以设置成统一标签,通过Tag标签查找,可以查找到N个物体。2) Unity中对象SetActive()方法,需要初始化false,然后再利用GameOblect.Find(“对象名”)方法是找不到隐藏对象的,需要先找到父物体,然后再根据父物体利用transform方法就可以查找游戏的隐藏对象。3) Unity3D脚本中常用方法:Awake方法:脚本实例时被调用OnEnable方法:对象被激活状态时被调用Start方法:该方法实在加载游戏场景的时候被调用Update方法:该方法会在执行每帧之前被调用FixedUpdate方法:该方法是执行物理行为的时候被调用OnGUI方法:处理OnGUI事件OnGestroy方法:对象销毁时调用2.2 3Ds MAX软件3ds Max是一款功能强大的3D建模设计软件,渲染逼真的3D模型和动画,主要基于多边形建模,和其他动画程序相比,多边形建模在游戏制作中使用更广,因为游戏制作对模型的面数是有高度特定控制的。它具有非常人性化的界面,还可以用于管理动画中的专业项目。最出色的功能之一就是添加插件功能,从而极大的提高了工作效率。2.3 Photoshop软件Photoshop是在1987年诞生的,由Thomas和John Knoll两人发开,是一款平面图像处理软件。可以编辑图片的颜色和形状,添加文本以及做出各种各样的图像效果,它是为专业设计师制作的,它需要很高的性能,PS能进行图像校正和调整,裁剪图片,添加图层等功能。主要用于网页设计、图像处理、三维动画、广告设计、彩色印刷以及影像特效制作等众多领域,已成为国际平面设计的标准技术。2.4 Visual Studio code软件Visual studio code是一款轻量级源代码编辑器,但是如果搭配插件使用的话,可以和Visual Studio的功能一样强,可在Windows、Linux、MacOS上运行,支持Unity的调试功能,而且支持智能提示,开发人员在开发过程中出现了代码错误的时候,它能定位到具体位置,还有各种方便的快捷键,软件开源并且免费使用。第三章 游戏策划及可行性分析3.1 游戏系统概述该项目是基于Unity3D引擎开发的变装游戏,游戏模式可分为两种,一种是单机模式,一种是联网模式,本次开发的是单机模式,游戏的玩法是玩家在进入游戏前选择发型、衣服、裙子、手套、裤袜、鞋子、眼睛等,然后搭配好个人喜欢的服饰,确定进入游戏。游戏功能有玩家可通过左键点击地面,人物移动到指定位置并有粒子效果显示点击位置,鼠标右键控制视角,玩家技能系统、敌人AI系统、战斗系统、回血站点、按Tab键显示换装系统、游戏结束等实现组成 。3.2 可行性分析3.2.1 技术可行性Unity3d引擎具有UGUI界面、物理系统、事件系统、粒子系统、还有AI系统,而本次游戏开发的变装功能的实现,使用UGUI中的Toggle和OnChangeValue实现的。游戏在碰撞和攻击的时候,需要用到碰撞器,物理系统提供碰撞检测函数。在玩家发动技能的时候,发射的粒子,可以通过粒子系统制作。敌人的运动和巡逻有动画状态机和AI系统可以实现,血条的增减可以通过UGUI完成。现今所需的所有功能Unity3D引擎足够支持。所以本次开发制作技术方面可行。3.2.2 经济可行性Unity3D引擎支持跨平台开发,支持Windows系列、Linux系列等操作系统的开发,制作好的游戏直接就可以导出exe文件在本地生成,玩家只需要复制一份到本地电脑就可以运行体验,所以不存在网络成本。如果需要在苹果或者安卓系统中体验,Unity3D引擎的优势突出,开发人员不用开发多个版本,就可以实现多平台开发,开发成本降低,并且效率高,因此经济上可行。3.2.3社会可行性在金钱社会的影响之下,在如今的部分游戏有以下特征:血腥、杀戮、外表暴露,例如:毁灭战士3、美人三国、女王之刃等游戏,这些游戏对于青少年的身心健康发展具有相当大的影响,而这款变装游戏都不具备这些特性,这款游戏采用卡通人物形象动漫风设定手法,游戏人物风格清新、唯美、可爱,更加适合青少年娱乐。因此游戏开发在社会上可行。3.3游戏架构设计下图3-3-1所示为游戏架构设计图: 图3-3-1 游戏架构第四章 变装系统的设计与实现4.1 变装系统的前期设计4.1.1 3DSMAX制作人物及服饰在3DSMAX中新建一个长方体,将其转化为可编辑多边形,然后在“修改”点击多边形,通过编辑多边形,如插入顶点,挤出、倒角插入、收缩、扩张等属性,完成对人物身体的建模,然后再使用镜像工具,完成对身体另一半的建模。然后再给人物增加贴图,制作完成的人物模型如下图4-1-1所示。图4-1-1 人物模型同理,头、头发、衣服、裤袜、鞋子也是采用同样的方式进行建模,最后把模型全部集中在一起。制作完成的服装模型如下图4-1-2所示。图4-1-2 人物服装4.1.2 骨骼动画的原理在新建好人物及服装之后,模型是不能直接动起来的,需要给模型绑定骨骼,事实上,可以不需要给人物增加骨骼,人物也一样可以运动,可以在关键帧里修改模型的顶点位置信息,这样人物就会跟着一起运动,但是,这种方式有一个缺点,就是效率低,如果需要制作一个复杂的动画,那么这种方式将会被淘汰掉。因此,就产生了骨骼+蒙皮的制作方式,它是通过将皮肤上的点转变成空间上的点,然后通过平移、旋转缩放把骨骼移动到新位置,再根据骨骼的新位置计算皮肤上的顶点的位置。如果一个顶点被多根骨骼影响,就需要使用顶点混合计算新的坐标点,而蒙皮就是为了把皮肤新的坐标点跟对应骨骼关联。至于怎么关联?每个顶点在骨骼上都有一个标号,然后在皮肤上受哪几根骨骼的影响还有受权重的影响有多大决定的。4.2 变装系统的实现原理Unity3D变装系统,有各式各样,但是这个变装系统采用的是Unity3d动态变装,这里需要一些服饰和变装的思路。这里的变装不是单纯的换衣服裤子的颜色,而是更换衣服和裤子的款式。谈到变装,很多游戏都有换装系统,包括一些很火的手游,例如王者荣耀、阴阳师、永远的七日之都、模拟人生,游戏的种类不一样,换装的原理也也是会有所不同。2D变装与3D变装有着很大差别,2D的换装需要大量图片来实现,而3D变装则不用,3D的换装需要用骨骼动画来实现。先把资源导入Unity,把人物模型拖到渲染器上,模型是一个白模,需要把贴图拖到人物身上,游戏人物组件只有一个Transform,骨骼多大表示是通过位置信息来表示的,找到对应部分的模拟,把对应的材质加到里面去。骨骼一直在动,它的位置信息也在不断发生改变,之所以会动着动着就停下来了,是因为没有勾选loop。Skinnned Mesh Renderer是蒙皮网格渲染器,主要用来渲染人物的,里面包含三大部分,包含网格、骨骼、还有材质。勾选上,隐藏,就是换装的原理。动态的话,要换骨骼,如果是静态的话,换掉Mesh就可以了。4.3 变装系统的实现步骤1) 换装的场景搭建,首先需要在场景中带有girl所有部位的模型,命名为lookhand-1,子物体中有15种头发,11件上衣,7副手套,11套短裙,8双裤袜,8双鞋子,9套长裙,1双眼睛,把这些模型的skinned mesh readerer存储到模型里面。然后还要一个空的骨骼,命名为lookhand-1Target, 还是girl的模型,但是需要把skinned mesh readerer全部删除掉,只留骨骼。一些服饰是通过代码生成的。新建一个文件夹命名为Resources,把lookhand-1和lookhand-1Target做成预制体放入Resources中,通过寻找Resources中的物体,生成到游戏场景中。把换装的房间模型导入游戏场景中,调整房间好与lookhand-1的位置。 2) 换装骨骼的加载:将lookhand-1中的所有skinned mesh readerer的信息存储到字典里。存储的方式是通过部位的名字加编号,所以模型部位在命名之前就需要命名好。新建一个字典,使用一个字典是存储不了的,字典通过键值对来查找信息,键是唯一的,值是不唯一,这里使用的嵌套字典来存储位置信息。另外有一套transform类型的骨骼信息,用来做骨骼绑定。初始化游戏信息,生成资源游戏物体,生成出来之后隐藏。骨架的加载也是同样的方式。如下图4-3-1所示:图4-3-1 骨骼加载3) 换装信息数据的存储:遍历所有子物体,然后把子物体的名字进行拆分,进行存储,然后生成对应的部位信息,且只生成一次。如下图4-3-2所示:图4-3-2 换装信息存储4) 换装逻辑的实现:换装的实现就是换材质球、换Mesh、换骨骼,ChangeMesh中有两个参数,通过girlData可以传入一个部 位的名字,以及这个部位所对应的编号,然后取出skinned mesh renderer去替换当前lookhand-1Target 的skinned mesh renderer。代码如下图4-3-3所示:图4-3-3 更换服装5) 人物加载到动态加载到场景中,初始化骨架让她有mesh、材质骨骼信息,建一个二维数组,二维数组中有part,num,默认穿第一套衣服。代码如下图4-3-4所示:图4-3-4 动态加载代码6) 游戏面板单选框的制作:右键新建一个Canvas,在Canvas之下新建添加一个Image,将Image改名为BG,在Image(Script)组件中添加背景图,然后将Image Type改成sliced。在添加一个Image,名字改为bg,同理BG的步骤,然后再bg下添加hair、coat、gloves、pants、stockings、shoes、outfit、eye、hairPanle。在hair中再新建一个Image。如下图4-4-5所示:图4-3-5 变装Image面板7) 点击菜单栏中的不同服饰,显示不同信息:在hair中添加Toggle组件,然后添加图片以及在OnValueChanged选择函数,其他服饰也同理可得,如下图4-3-6所示:图4-3-6 hair面板8) 更换面板UI图标:使用UGUI来制作,添加背景图片,让背景图片自适应,增添选项栏,可以选择头发、上衣短裙、鞋子、裤袜、长裙、眼睛。都添加Toggle Group组件,在头发中新建Image将名改成hair-1,添加图片,需要15种发型,新建15个Image,在hair-1中新建两个Image,名字分别为bored和ok,添加相应的图片。如下图4-3-7及4-3-8所示:图4-3-7 hair图片面板图4-3-8 切换图标代码9) 保存换装信息到新的场景:代码如下图4-3-9和4-3-10所示:图4-3-9 保存信息图4-3-10 加载到game场景10) 添加换装动画,最后,人物在换装的时候,上衣和一整套裙子不能同时使用,需要判断是上衣还是裙子,两者不能同时有,只能存在一个,最终实现换装效果如下图4-3-11所示:图4-3-11换装裙子4.4 UI制作4.4.1 主菜单界面图4-4-1 开始界面 4.4.2 变装界面图4-4-2 变装界面4.4.3 游戏结束界面图4-4-3 游戏结束界面 第五章 动画系统的概念及实现 5.1 动画系统介绍5.1.1 旧版动画系统与新版的区别1) 在旧版动画系统中,模型使用了Legacy,只能使用Animation播放动画Generic适合人形或者其他怪物,而Humanoid用于人形骨骼,2) 新版动画系统可以进行动画重定向,重定向就是第一个人物模型使用了Humanoid,其他人物模型也可以使用这个动画,在旧版动画系统中是不可以使用的。3) 新版选择Generic或Legacy在Rig下面有选项optimize GameObject勾选,模型会自动添加Skined Mesh Render组件,作用是把一些不需要显示的骨骼隐藏。5.1.2 模型动画导入将带有动画的3D模型导入到Unity中,将人物的全部模型动画在Rig中都设置为Generic,将敌人的设置成Humanoid,然后点击Apply,点击Animation面板,勾选Loop Time就是循环播放,不勾选就只播放一次动画。还有一点需要注意的是将Animator组件中的Apply Root Motion取消勾选即可。5.2 动画系统的实现1) 在人物模型(lookhang-1Target)添加Animator组件,新建一个状态机命名为Idle,然后把需要的动画拖到状态机,并且设置状态机的切换条件,然后连接动画片段。如下图5-2-2所示:图5-2-1 人物动画状态机控制动画状态的条件有四种设置方式,Float、Int、Bool、Trigger,第一种设置Float控制动画状态的参数,按下WSAD键人物行走可以通过添加混合树实现,但本次人物行走未采用这种方式。第二种使用Int,也是用于速度方向等可用于数值量化的,第三种是Bool,条件为真的时候执行某个动画,为假的时候执行另一个动画。Trigger和bool类型相似,它默认为false。2) 在点击连接线的时候,属性面板就会显示相关内容,其中Has Exit Time这个的作用是如果动画过度有条件的时候,勾选它,当满足条件,动画会先播放完上一个动画,再播放下一个,如果没有勾选,满足条件,不管当前动画是否播放完毕,它会直接跳到下一个动画。人物在跑步的时候,添加bool条件,Has Exit Time不勾选,人物在发射Q、E、R技能的时候,需要执行播放完技能动作之后,在执行其他动画。3) 人物移动到鼠标点击位置实现原理:之所以人物会移动到鼠标指定位置,是因为在鼠标按下左键的时候,摄像机发射一条射线,射线碰到collider就停止,然后把碰撞的信息保存到RayCastHit结构体中,然后在结构体中获取到碰撞位置信息以及物体属性。4) 人物移动的实现:人物移动,获取到鼠标点击位置之后,人物并没有朝向点击位置,人物有可能侧移背移到鼠标点击位置,而需要的是正向移动到指定位置,实现代码如下图5-2-2和5-2-3所示:图5-2-2 面向鼠标点击位置图5-2-3 人物动画第六章 战斗系统的实现 6.1 第三人称视角移动和旋转6.1.1 摄像机跟随人物移动实现摄像机跟随移动的方法其实有很多,直接把摄像机放入移动物体里面,这样摄像机就可以跟随人物移动,使用的是鼠标点击地面移动到指定位置,如果使用这种方式,摄像机会立刻旋转视角,效果极其不好。因此,使用脚本来控制摄像机的移动,先预置好摄像机与物体的距离,在脚本中知道物体的位置和摄像机的位置,再用插值的方式可以实现让摄像机平滑移动,且紧跟物体。代码如下图6-1-1所示:图6-1-1 摄像机跟随6.1.2 缩放物体与摄像机的距离定义浮点型位置偏移的向量长度,使用鼠标滚轮滚动获取变化长度,给偏移长度设置限制,最近不能小于4,最远不能大于18,最后计算出偏移位置。代码如下图6-1-2所示:图6-1-2 摄像机前移后移6.1.3 旋转第三人称视角视角的旋转左右旋转和上下旋转,这里的旋转,需要理清楚的是摄像机绕着人物旋转,还是人物绕着摄像机旋转。这里是摄像机绕着人物旋转,获取人物位置、摄像机朝向以及旋转轴。同理,上下旋转也是这样,但是,在场景中,并不需要360°旋转,只需要旋转一定的角度就可以,旋转10°到90°度视角就可以。旋转概念图6-1-3及代码如下图6-1-4所示:图6-1-3 旋转概念图图6-1-4 摄像机旋转代码6.2 鼠标点击特效及技能特效的实现6.2.1 鼠标点击播放特效 前面实现了鼠标点击地面移动,而现在只需要在鼠标点击左键的时候,实例化一个粒子特效,在粒子实例化出来之后,为了减少内存及性能的消耗,需要在一定时间之后销毁它。代码如下图6-2-1所示: 图6-2-1 点击特效代码6.2.2 技能粒子特效的实现1) Q技能特效制作:粒子特效的制作主要有三部分组成,分别为粒子发射器、粒子渲染器、粒子动画器,在发射粒子前,要知道制作粒子要怎样的效果,例如Q技能的制作,要让粒子如球形状以一定的速度往一个方向发射,到一定时间消失。在发射器中需要设置粒子发射的周期,并且不要循环发射,是要实现按下按键发射一次。接着要给粒子发射的速度,粒子的大小,粒子发射形状,粒子发射的角度以及粒子什么时候消失。在设置模式的时候,要将粒子系统跟随初始位置,粒子动画器的使用要配合渲染器组件中的材质球。因为序列帧的图片是从渲染器组件中获取的。在渲染器中将模式改为可根据相机、速度、长度来调节粒子的缩放,还要添加渲染粒子的材质球。如下图6-2-2-1和6-2-2-2所示:图6-2-2-1 粒子属性面板图6-2-2 Q技能制作效果同理,E、R技能粒子特效也同通过设置粒子系统中的相关参数和添加相应的贴图得到。2) 释放Q技能的实现:首先将粒子特效设置成预制体,找到QAttack攻击动画,在Animation的Events事件中,当播放到某帧动画的时候,播放粒子特效,在某个时间点添加一个关键帧,Function命名为OnAttack。新建一个空物体Qfire挂载脚本,再新建一个物体QFSK作为Qfire子物体,调整QFSK作为发射口,需要调整相应的位置。按下Q键播放动画,动画执行到特定时间的时候,触发QOnAttack函数。代码如下图6-2-3和6-2-4所示:图6-2-3 添加关键帧函数图6-2-4 生成Q技能特效 同理,E、R技能的实现方式也相同,实现效果如下图6-2-5和6-2-6所示。图6-2-5 E技能实现效果图6-2-6 R技能实现效果3) 人在跑的过程中释放技能,它不会立刻停下来,而是播放技能动画,但是身体也会移动到指定位置才停下来,有一种使人物停下来的办法就是设置NavMeshAgent组件的速度0;人物虽然停下来了,但是想让它继续移动就不行了。这里还有第二种方式解决,使NavMeshAgent组件设置enabled为false;6.3 AI敌人的