虚拟现实交互设计(基于Unity引擎)(微课版)全套完整教学课件_第1页
虚拟现实交互设计(基于Unity引擎)(微课版)全套完整教学课件_第2页
虚拟现实交互设计(基于Unity引擎)(微课版)全套完整教学课件_第3页
虚拟现实交互设计(基于Unity引擎)(微课版)全套完整教学课件_第4页
虚拟现实交互设计(基于Unity引擎)(微课版)全套完整教学课件_第5页
已阅读5页,还剩194页未读 继续免费阅读

下载本文档

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

文档简介

虚拟现实交互设计(基于Unity引擎)(微课版)全套可编辑PPT幻灯片课件01走进Unity的世界.ppt02通过一个小游戏认识Unity——星际冒险.ppt03基本3D场景的创建——湖光山色.ppt04角色控制和道具拾取——坦克大战.ppt05粒子系统和音效——消防演练.ppt06交互界面、角色动画及战斗交互——异星猎手.ppt虚拟交互设计——走进Unity的世界提纲认识本课程1了解Unity的作用并学会安装2理解项目资源的概念3如何获取项目资源401认识本课程PartOne认识本课程课程定位课程目标考核方式了解Unity的作用并学会安装了解Unity的作用并学会安装Unity的版本个人版(非商业用途,免费使用,功能齐全)专业版加强版Unity的下载官网先注册Unity账号,登陆后可下载了解Unity的作用并学会安装版本的选择课本使用的是2017.1.0版(推荐)将来实际使用可选择LTS(长期支持版)了解Unity的作用并学会安装根据安装包的提示完成安装了解Unity的作用并学会安装激活并选择“个人版”了解Unity的作用并学会安装注意:当计算机可联网时需要登录后才能正常使用长期不用之后,可能需要重新激活(Re-active)练习下载Unity2017.1.0版,并在自己的电脑上安装并激活03理解项目资源的概念PartThree理解项目资源的概念理解项目资源的概念“资源”就是指任何可以运用在游戏或者虚拟现实项目中的一切文件04如何获取项目资源PartFour如何获取项目资源从Unity的AssetsStore获取资源直接从Unity资源包文件导入资源将自己创作的3D模型导出为适用于Unity的“fbx”文件从Unity的AssetsStore获取资源直接从Unity资源包文件导入资源扩展名为“nitypackage”的文件均为Unity资源包由3D建模软件导出的“fbx”文件注意导出的设置练习尝试在Unity中从AssetsStore下载一个人物角色资源在Unity中从课本的素材里导入一个Unity资源包在3dMax或者Maya中将之前自己创建的模型导出为“FBX”文件并导入Unity中查看总结Unity的作用及安装方法理解项目资源的概念获取项目资源的方法虚拟交互设计通过一个小游戏认识Unity——星际冒险提纲项目概览1项目和场景的创建2项目资源的导入和编辑3交互功能的实现401项目概览PartOne项目概览本章将通过一个小游戏《SpaceShooter》来介绍Unity项目和场景的创建及资源的管理方法,同时让读者能够体验一个Unity作品的开发总体流程。02项目和场景的创建PartTwo本节学习目标了解Unity中“项目”和“场景”的概念以及它们的关系掌握项目和场景的创建方法“项目”和“场景”的概念从内容上来说一个“项目(Project)”就是一个作品一个“关卡”就是项目的一个“场景(Sence)”从文件结构上来看一个项目对应硬盘上的一个文件夹03项目资源的导入和编辑PartThree本节学习目标掌握外部资源导入掌握在Unity中利用资源创建游戏对象的方法掌握在Unity中编辑游戏对象的方法外部资源导入“直接拷贝”法适用于未打包的分散资源直接拷贝到项目文件夹的“Assets”文件夹或者其子文件夹中即可“从资源包导入”法适用于将扩展名为“unitypackage”的资源包文件中包含的所有资源导入项目中“从资源包导入”法练习将课本素材资源包文件“SpaceShooter.unitypackage”载入到本章创建的项目中04交互功能的实现PartFour本节学习目标了解Unity中“游戏物体”和“组件”的概念以及它们的关系初步了解“预制体”的概念及其使用方法初步了解几个常用组件的作用及用法“游戏物体”和“组件”的概念一个“游戏物体”即为场景中的一个对象“组件”则是构成“游戏物体”的功能单元练习在图中所展示的场景中,有哪些“游戏对象”?游戏对象“BackGround”有哪些“组件”?常用组件的作用1Transform组件作用:控制游戏对象的位置、姿态和大小比例常用属性Position位置Rotation旋转(姿态)Scale大小比例常用组件的作用2MeshRenderer组件作用:控制游戏物体在场景中显示的视觉效果常用属性:Lighting灯光(对游戏物体的影响)Materials材质(可有多个,数组形式)常用组件的作用3Rigidbody组件作用:使游戏物体具备物理学中“刚体”的力学属性常用属性:Mass质量Drag线性阻力(阻碍平移的因素)AngularDrag旋转阻力(阻碍旋转的因素)UseGravity是否适用重力(如果使用,物体会获得重力,方向为世界坐标系Y轴负方向)常用组件的作用4脚本组件Unity脚本是由游戏开发者利用程序语言编写的可以对游戏项目中的资源、场景中的对象进行操纵的程序文件脚本可以作为“组件”添加到游戏对象上,使得游戏对象增加原先不具备的功能游戏对象、组件的综合应用背景画面的滚动效果通过“Transform”组件调整位置通过“MeshRenderer”组件更改外观通过脚本组件控制其运动(依赖“Transform”组件)飞船的控制通过“RigidBody”组件模拟其力学效果通过脚本组件实现“人-船”互动陨石的运动通过脚本组件控制其运动(依赖“RigidBody”组件)常用组件的作用5Collider组件作用:用于检测两个游戏对象是否存在体积上的重合的一类组件,以其“形状”+“Collider”的方式命名常用参数IsTrigger是否触发器(如果为“否”,结合“RigidBody”组件可实现“弹性碰撞”效果;如果为“是”,结合脚本组件可以探测游戏对象之间的接触事件)“预制体”的概念及其使用方法Unity预制体作为资源存放在Unity项目中,是由开发者创建的具有自定义功能的对象型资源,通过从场景中拖拽游戏对象到“Project”窗口中创建,具备游戏对象的所有功能组件“预制体”的概念及其使用方法可将“预制体”作为模板在场景中创造出多个游戏对象用法一:用鼠标拖曳到场景中创建出一个新对象用法二:利用程序脚本对“预制体”进行“实例化”游戏对象、组件和预制件的综合应用陨石的生成及回收生成思路:将三种陨石“预制体”复制并放置在飞船前方回收思路:探测陨石与“回收墙”的接触事件(依赖“Collider”组件),并在响应事件时删除与“回收墙”接触的陨石(通过“回收墙”上的脚本实现)游戏管理器通过脚本,实现“陨石的生成”功能通过脚本,控制陨石生成的节奏总结-知识点Unity中“项目”和“场景”的概念及它们的关系Unity中“游戏物体”和“组件”的概念及其相互关系“Transform”、“Rigibody”、“Collider”三种组件的作用Unity脚本的作用Unity中“预制体”的概念及其用法总结-技能点如何创建和管理一个Unity项目如何载入并管理资源“如何创建场景并在场景中创建游戏物体如何查看并使用游戏物体的组件来实现特定功能如何利用现成的脚本来实现特定功能虚拟交互设计基本3D场景的创建——湖光山色提纲项目概览1地形的创建和美化2添加静态物、水面以及场景漫游3其他环境效果401项目概览PartOne项目概览通过实现本项目,我们将学习如何利用Unity制作3D地形,并使之成为一个可漫游的仿真自然环境。02地形的创建和美化PartTwo本节学习目标了解地形对象及其“Terrain”组件的作用了解光线对象及其“Light”组件的作用掌握Unity中创建和编辑地形对象的方法掌握将外部资源导入、改造、制作成预制体并使用的方法地形对象及其“Terrain”组件的作用地形对象是Unity中特有的一种用户制作自然地形地貌的对象通过Unity的“3DObject->Terrain”菜单命令在场景中创建一个地形对象对应一个“NewTerrain.asset”文件(可改名)“Terrain”组件是地形对象上的主要功能组件,提供了编辑地形的所有功能一个地形对象的示例创建和编辑地形对象的方法新建通过Unity的“3DObject->Terrain”菜单命令从已有的地形文件创建在同一个项目中,可以将已有的地形文件“拖曳”到当前场景中(“Hierarchy”窗口或者“Scene”窗口),从而“复制”出新的地形对象编辑地形对象的方法通过“Terrain”组件进行编辑注意事项:新创建的地形高度默认为0,如果需要使用下沉功能,应该在最开始就使用“取指定高度”功能将整个地形的初始高度抬升为大于0的值“设置”功能中可以设置地形对象的大小范围(长宽高)在地形上种树时应注意为了统一不同来源树木模型的比例不一致问题,可以按下列步骤进行:将不同来源的树木模型导入一个新场景中在加入参照物后通过调整树木对像“Transform”组件的“Scale”属性值将所有模型调整到合适的大小分别创建树木预制体场景中的光源及创建方法默认情况下,Unity在场景中添加了平行光对象“DirectionalLight”可以通过右键菜单创建新光源“Light”组件每个光源对象均有“Light”组件常用属性名称作用Type光源类型,可选项有:Spot(聚光灯型),Directional(平行光型),Point(点光源),Area(局域光型,只用于烘培)Color光的颜色Intensity光强ShadowType阴影类型,可选项有:NoShadows(不产生阴影),HardShadow(硬边缘的阴影,类似于真空中产生的阴影),SoftShadows(软边缘的阴影,最接近真实的阴影)平行光源的特殊功能场景中的第一个平行光对象“DirectionalLight”可以与“天空盒”联动练习完成课本中地形创建和美化的实操练习体会并理解本节所学的知识点和技能点03添加静态物、水面以及场景漫游PartThree本节学习目标掌握如何在Unity场景中创建基本几何体以及导入外部模型的方法掌握在Unity中快速实现漫游功能的方法在Unity场景中创建基本几何体可通过菜单“GameObject->3DObject”命令系列创建也可通过右键菜单创建在Unity场景中导入外部模型在场景中创建出模型对象的两种方法将导入Unity项目的“FBX”文件拖曳到场景中将导入资源中的“预制体”文件拖曳到场景中练习在你所创建的地形上载入房屋模型注意对房屋周围的地形进行平整,以使模型和地形贴合创建水面水面的本质是采用了特殊材质并利用脚本控制其呈现效果的平面对象本项目直接从标准资源中加载“水面”对象漫游功能的实现利用“角色控制标准资源”可以快速实现场景漫游功能注意在场景中载入“FPSController”对象后,要删除主摄像机对象为防止“穿墙”,要给房屋模型对象添加“Collider”练习完成课本中添加静态物、水面以及场景漫游的实操练习04其他环境效果PartFour本节学习目标掌握在Unity中快速实现天空、雾、音效等环境效果的方法天空盒的作用及类别在Unity中,天空的效果是通过在“Lighting”窗口指定天空盒材质来实现的天空盒材质的种类:Procedural——默认选项,通过运算模型模拟天空效果,可以与平行光对象联动模拟太阳Cubemap——利用“Cubemap”贴图模拟天空效果(本质上是一张全景贴图)6Sided——利用上、下、左、右、前、后6张贴图构建出全景图来模拟天空效果快速更改天空盒可以在“Lighting”窗口重新指定场景所用的天空盒材质雾效在“Lighting”窗口中设置“Collor”——雾气的颜色“Mode”——雾气透光性的计算模式“Density”——雾气的浓度音效谁来听声音?——摄像机对象上的“AudioListener”组件在Unity中使用“AudioSource”组件实现音效“AudioSource”组件常用属性:“AudioClip”属性——要播放的声音文件“SpatialBlend”属性——3D效果,范围0到1,0为纯2D,1为纯3D“3DSoundSettings”属性栏下的“MinDistance(最近距离)”和“MaxDistance(最远距离)”决定在场景中能够听到声音的与声音源对象的距离范围练习完成课本中设置天空盒、添加雾效以及添加音效的实操练习总结-知识点地形对象及其“Terrain”组件的作用光线对象及其“Light”组件的作用““预制体”的概念及其用法声音对象及其“AudioSource”组件的作用总结-技能点如何利用地形对象及其“Terrain”组件制作自然3D地形如何将外部导入的模型资源进行调整后再制作成预制体并应用到项目如何快速实现第一人称漫游功能如何在场景中快速实现水面、天空、雾气效果如何在场景中添加音效并设置其3D效果虚拟交互设计角色控制和道具拾取——坦克大战提纲项目概览1键盘控制下的游戏对象移动控制2鼠标引导下的游戏对象转动控制3利用鼠标生成游戏对象4触发器的应用501项目概览PartOne项目概览通过实现本项目,读我们将学习如何编写程序脚本来实现坦克的运动控制,以及如何综合利用射线、碰撞检测、触发器来实现坦克开火功能和道具拾取功能。02键盘控制下的游戏对象移动控制PartTwo本节学习目标了解Unity脚本的用途及其基本结构掌握用脚本控制游戏对象运动的多种方法实现用键盘控制坦克移动"用键盘控制坦克移动"是键盘控制下的游戏对象移动控制的一个典型案例功能描述:玩家通过键盘上的W键和S键分别控制坦克前进和后退,A键和D键分别控制坦克左转和右转实现用键盘控制坦克移动首先了解一个C#脚本的基本结构用脚本实现键盘控制对象运动的原理坦克对象的Tranform组件用户的键盘输入WASDTankMover脚本脚本中的tranform对象脚本中的Input类探测输入控制逻辑获取输入更新位置和方向练习完成课本中坦克对象的创建和坦克移动控制功能的实现体会并理解本节所学的知识点和技能点03鼠标引导下的游戏对象转动控制PartThree本节学习目标理解Unity中游戏对象自身坐标系个方向的含义理解什么是空对象及其作用理解Unity中对象的父子关系及作用了解Unity中“射线”的作用了解Unity中“层”的概念和作用能够利用“射线”结合鼠标控制游戏对象的转动Unity中游戏对象自身坐标系个方向的含义Z轴正向——前Y轴正向——上X轴正向——右空对象及其作用空对象就是只有“Transform”对象的游戏对象由右键菜单“CreateEmpty”创建有多种用途挂载不归属特定对象的脚本用于调整自身坐标系不符合Unity习惯的模型对象Unity中对象的父子关系在“Hierarchy”窗口将对象A拖曳到对象B上,则A会成为B的子对象,此时B称为A的父对象子对象会自动跟随父对象平移、旋转和缩放子对象“Transform”组件中的属性值为相对父对象的“相对值”练习完成课本中对坦克炮塔的调整理解和体会自身坐标系的含义,空对象的作用以及游戏对象的父子关系坦克炮塔的转动控制利用鼠标引导炮塔的转动实现原理:利用从鼠标射向场景的“射线”,确定鼠标所指位置将炮塔按一定的角速度旋转至“炮口对准鼠标所指位置”的状态Unity中“射线”的作用只存在于脚本中的一种对象,其类名为“Ray”其概念与数学中“射线”的概念一致用途探测鼠标所指位置探测两点之间是否存在某类对象用法与“RaycastHit”类的对象配合使用(存储探测结果)通过调用“Physics.Raycast”函数来进行探测Unity中“层”的概念和作用用于对游戏对象以及预制体进行分类通过“Inspector”界面的“Layer”属性进行设置编号0到7的层由Unity定义,从编号8开始可以由用户自定义在脚本中,可以通过“gameObject.layer”来读取和修改脚本所在游戏对象的“Layer”属性在很多场合,可以利用层来筛选游戏对象,比如在射线探测过程中,可以忽略某些层之外的游戏对象如何控制炮塔的转向练习完成课本中“坦克炮塔的转动控制”的实操练习04坦克的开炮控制——利用鼠标生成游戏对象PartFour本节学习目标初步了解Unity粒子系统的作用了解Unity中“协程”的作用掌握利用“射线”和“实例化”实现对象的生成方法掌握利用“协程”实现“武器装填时间”的方法坦克的开炮控制的核心原理及过程利用“射线”探测鼠标所指位置探测用户是否按下鼠标左键(控制开炮的动作)利用“Instantate”函数将爆炸粒子预制体复制并放置在鼠标所指位置从而模拟一次爆炸初步了解Unity粒子系统的作用Unity的粒子系统提供了一类具有“ParticleSystem”组件的对象合理的设置“ParticleSystem”组件的属性可以模拟丰富的自然现象,比如火焰、爆炸、冲击波等等多个粒子对象以父子关系结合在一起,可以模拟复杂的现象在本项目中,我们使用课本素材中现成的粒子对象预制体了解Unity中“协程”的作用“协程”是Unity脚本中的一种特殊的函数返回值类型为“IEnumerator”函数中一般都有“yieldreturn”语句作用:可以用于实现“定时”功能,通过“yieldreturn”语句设置等待一段时间后再执行后续语句比如本项目中的“炮弹装填时间”练习完成课本中坦克的开炮控制的实操练习体会和掌握:利用“射线”和“实例化”实现对象的生成方法(爆炸效果)利用“协程”实现“武器装填时间”的方法05道具的创建和拾取——触发器的应用PartFive本节学习目标了解Unity中“碰撞”的概念及其作用掌握利用碰撞检测实现阻挡效果以及道具拾取功能的方法Unity中“碰撞”的概念及其作用Unity中的“碰撞”就是两个“刚体”的相互接触,或者“刚体”与“静态物体”的接触比如两个重量相似的球(两个“刚体”)在半空中相互接触,或者一个球(“刚体”)下落并和地面(静态物体)接触同时具备“Rigidbody”组件和“Collider”组件的游戏对象即为“刚体”只具有“Collider”组件的游戏对象即为“静态物体”Unity中“碰撞”的概念及其作用利用“碰撞”可以模拟现实世界中的力学现象如果将“Collider”组件的“IsTrigger(是触发器)”属性值设为“false”,则成为“触发器”“触发器”只探测物体间的接触事件,不模拟力学现象房屋阻挡坦克的功能应该使用“碰撞”功能,道具拾取功能应使用“触发器”功能练习完成课本中实现道具拾取的实操练习体会和理解“碰撞检测”的作用总结-知识点Unity脚本的作用及其使用方法“Transform”组件的作用及其在脚本中的使用方法“Input”对象的作用及其用法“射线”的作用及其在脚本中的使用方法“层”的作用及其使用方法“协程”的作用及其在脚本中的使用方法碰撞检测的作用及其使用方法总结-技能点如何实现通过键盘和鼠标控制游戏物体的移动和旋转如何利用“射线”实现鼠标在三维场景中的定位如何利用“层”将场景中的对象分类并在脚本中区别物体所属的类别如何利用“协程”在脚本中实现“武器装填时间”和“道具作用时间”如何利用“射线”和实例化预制体的方法实现炮击效果如何利用“射线”和实例化预制体的方法实现炮击效果如何利用“射线”和“碰撞检测”实现建筑物对炮弹的阻挡效果如何利用“碰撞检测”阻止坦克穿透建筑物如何设计功能道具并利用“触发事件”实现道具的拾取虚拟交互设计粒子系统和音效——消防演练提纲项目概览1了解和使用Unity中的声音2了解和使用Unity中的粒子系统3粒子碰撞的概念及其应用5游戏管理器的设计6利用UGUI实现“血条”401项目概览PartOne项目概览通过实现本项目,我们将学习如何利用粒子系统来模拟虚拟场景中的火焰、烟雾、喷射物等特效,并学习粒子系统的控制、实现粒子系统之间的相互作用以及音效的控制。02了解和使用Unity中的声音PartTwo本节学习目标了解Unity中声音效果的实现原理了解“AudioSource”组件的作用掌握音效的脚本控制方法Unity中声音效果的实现原理在现实世界中,声音由“声源”产生,我们用耳朵来感受声音在Unity中,声音由“AudioSource”组件产生,由“AudioListener”组件接收声音,从而在虚拟世界中模拟出声音效果现实世界Unity虚拟世界“AudioSource”组件Unity中用于模拟声音源的组件常用属性:AudioClip播放的声音文件Output输出(到哪个混音器)PlayOnAwake自动播放Loop循环播放Volume音量SpatialBlend空间融合效果(二三维比例)3DSoundSettings三维设置“AudioSource”组件的使用技巧当用于播放背景音乐时,可将“SpatialBlend”设置为0(纯二维)当用于三维音效时,可以通过“3DSoundSettings”属性下的“MinDistance”和“MaxDistance”控制声音的传播范围,通过“VolumeRolloff”来设置音量随距离的变化趋势声音的位置取决于“AudioSource”组件所在游戏对象的位置,比如脚步声的声音源要放置在人物角色脚的位置场景中有多个声音的时候,为了方便调节音量,可以使用混音器来统一调节混音器的创建混音器是用于对多个声音源进行混音设置的Unity资源使用混音器可以在一个界面中调整多个声音的音量,从而快速获得最优的音量组合混音器的编辑界面在“Assets”窗口选中混音器后,到“Inspector”窗口单击“Open”按钮即可打开混音器界面,并进行编辑添加子混音组一个混音器的总音量由“Master”组控制在“Master”组下可以创建多个子组,用于分别控制不同声音的音量子组创建方法:“Master”组上单击鼠标右键,选择“Addchildgroup”,并输入名称为每个声音源指定混音组选择声音源对象后,到“Inspector”设置其“Output”属性,指定对应的混音器子组混音的实现将每个声音源对应到混音器的不同子组后,即可在“AudioMixer”界面设置每种声音的音量大小,从而实现混音练习导入项目素材后,创建两个声音源对象,分别播放报警声和火焰燃烧的声音,用一个混音器对这两个声音进行混音在完成课本的整个项目后,创建一个混音器并统一调整项目中所有声音的音量03了解和使用Unity中的粒子系统PartThree本节学习目标了解粒子系统的作用了解“ParticleSystem”组件的作用粒子系统的作用粒子系统是利用粒子模拟多种特殊视觉效果的系统在Unity中,通过“ParticleSystem”组件来实现粒子效果多个具备“ParticleSystem”组件的对象组合在一起可以模拟复杂视觉特效“ParticleSystem”组件该组件具有丰富的参数,由一个主模块以及多个子模块构成每个模块及其参数的含义,可参考Unity的文档/Manual/PartSysReference.html快速使用粒子系统Unity的资源商店有很多优秀的粒子资源,可以根据需要购买并下载使用,比如免费的“ParticlePack”练习完成课本制作火焰和烟雾效果的实操练习体验如何使用现有粒子资源快速实现项目效果04PartFour利用UGUI实现“血条”本节学习目标初步了解Unity的界面系统UGUI的作用利用UGUI实现游戏界面上的文字和“血条”Unity的界面系统UGUI用于实现作品的界面比如本项目中的“火势大小血条”和“倒计时”界面对象的构成及要素所有界面对象都是一个“Canvas(画布)”对象的子对象简单的界面对象如“Text(文字)”对象是单个对象负责的界面对象如“Button(按钮)”对象是多个对象的组合要与“EventSystem”配合使用“血条”的实现原理“血条”由两个“Image(图像)”对象构成一个充当“背景”,另一个充当“血量”,代表血条的图片由“Image”组件的“SourceImage”属性指定“Image”组件的“ImageType”属性要设置为“Filled(填充)”“FillMethod”属性决定的填充的形式“FillAmount”决定了填充量充当“血量”的“Image”对象的填充量代表血量练习完成课本中火势大小界面显示的实操练习体会和掌握UnityUGUI中“Text”和“Image”的用法05粒子碰撞的概念及其应用PartFive本节学习目标掌握粒子碰撞检测及粒子形态的脚本控制方法粒子碰撞在Unity中,粒子与具有“Collider”组件的游戏物体接触时会有碰撞效果粒子碰撞事件的触发通过设置粒子系统“ParticalSystem”组件的“Collision”模块的“SendCollisionMessage”属性为“True”,即可触发粒子碰撞事件粒子碰撞事件的检测在粒子对象的脚本中,使用粒子碰撞事件的回调函数“OnParticleCollision”来检测碰撞事件的发生以及识别碰撞的对象练习完成课本中实现灭火功能的实操练习体会和理解“粒子碰撞”的作用及其用法06游戏管理器的设计PartFive本节学习目标掌握游戏管理功能的实现方法游戏管理器的作用但凡需要对整个作品的运作逻辑进行控制,都应该设计相关的管理器,可以称为“游戏管理器”比如在本项目中,我们需要“游戏管理器”对界面控制器对象、火焰对象、第一人称角色控制对象进行统一调度设计思路游戏管理器界面管理器界面对象文字血条游戏角色火焰练习完成课本中实现游戏管理功能的实操练习体会和理解游戏管理的设计思路总结-知识点粒子特效对象及其用法声音源对象及其用法UGUI的作用及其用法粒子碰撞检测的作用及用法总结-技能点如何载入粒子对象和用脚本控制粒子对象声音的使用和管理如何利用UI图形对象制作“血条”如何实现粒子碰撞检测如何设计和使用游戏管理类虚拟交互设计交互界面、角色动画及战斗交互——异星猎手提纲项目概览1游戏换装交互界面的设计和功能实现2角色动作及角色控制的实现3敌人角色的加入及其交互功能的实现5游戏管理功能的设计6游戏角色战斗功能的实现401项目概览PartOne项目概览通过实现本项目,读者将学习交互界面的功能实现、角色动画的应用、自动寻路功能的使用以及不同角色之间互动功能的实现。02游戏换装交互界面的设计和功能实现PartTwo本节学习目标进一步了解UI对象的作用和结构掌握UI与游戏对象交互功能的实现方法本项目中的涉及的新UI元素——按钮采用“Button(按钮)”对象作为换装操作的交互手段“Button”对象的构成Image组件管理按钮的图形外观Button组件管理按钮的功能Text子对象管理按钮上的文字“Button”组件详解更详细的信息:/Packages/com.unity.ugui@1.0/manual/script-Button.html换装实现思路“Player”对象的子对象构成身体“bb_female_body”头发“bb_female_hair”参考点“reference”其他子对象均为服装模型对象服装模型对象可以分为三类:上装、下装和鞋换装思路:每类服装模型都只有一个对象处于“激活”状态(每次只穿一套)预先挑选几套服装作为备选套装设计合适的“套装”类脚本和“换装”类脚本来实现游戏主角的换装功能“ClothesSuit”类的设计用于管理一套服装的激活状态激活则显示,不激活则消失“ChangeClothes”类的设计用一个数组存储多个“ClothesSuit”类的对象,从而可以控制多套服装的显示和隐藏设计“DressUp()”和“TakeOff()”两个私有函数用于控制套装的显示和隐藏以循环遍历服装数组的方式切换服装提供“LastSuit()”和“NextSuit()”两个公开函数用于换装按钮与换装功能的关联创建一个空对象作为换装对象加载并设置多个“ClothesSuit”组件(多套备选服装)加载并设置一个“ChangeClothes”组件用于控制换装将换装对象“ChangeClothes”组件的“LastSuit()”和“NextSuit()”两个公开函数与对应按钮的回调函数列表关联练习自己动手实现基于界面按钮的换装功能理解和体验按钮对象的作用,特别是“OnClick”列表的作用03角色动作及角色控制的实现PartThree本节学习目标了解“Animator”组件的作用了解动画控制状态转换图作用掌握游戏角色的动作控制方法“Animator”组件用于控制游戏对象“动作”的组件“动作”即动画,对于程序可控的游戏角色对象一段动画对应一个动作“Animator”组件借助“Controller(控制器)”和脚本实现对游戏对象的动作进行控制“Animator”组件的“Controller”属性“Controller”属性指向Unity中的一种资源——“.controller”文件“.controller”文件顾名思义是“(动画)控制器”“.controller”文件可在“Animator”窗口中编辑,设置“状态转换图”、“转换条件属性”和“转换图层”动画控制状态转换图一个状态对应一个动作一条有向连线对应一个转换(从起点状态转换到目标状态)参数用于控制转换条件(是否可以转换)脚本可以控制角色的动作(状态)变化在脚本中,通过“GetComponent”函数获取“Animator”组件的控制权通过“Animator”组件对象的“SetXXX”系列函数,比如“SetBool”、“SetInt”等,修改状态转换图中的参数值,从而实现最动作(状态)变化的控制动画控制器和对应的动作控制脚本可以复用为角色A设计的动画控制器(.controller)文件及其对应的控制脚本,可以通过简单设置用到角色B上前提条件:角色A和角色B都是人形角色,其模型文件的动画类型属性均为“Humanoid”复用方法:将角色A所使用的“.controller”文件赋值给角色B“Animator”组件的“controller”属性将对应的脚本加载到角色B上练习完成课本角色动作及角色控制实现的实操练习理解“Animator”组件的作用掌握以复用的方式快速实现角色控制的方法04PartFour游戏角色战斗功能的实现本节学习目标理解Unity动画状态转换图中“层”的作用及用法理解Unity角色动画中“IK”的作用及用法掌握利用动画状态转换图中的多个“层”实现不同角色动画(动作)的融合战斗功能实现过程中对动画(动作)融合的需求根本需求:需要一个可以在移动过程中举枪射击的角色动画现实困难:没有现成的满足上述要求的动画,原因是本项目中的角色动画均复用自不同来源的资源包,没有针对本项目设计动画现有条件:有普通的行走动画,也有原地举枪射击的动画解决方案:可以利用动画状态转换图中多个“层”的叠加,将已有的两个动画融合,从而满足需求Unity动画状态转换图中“层”的作用及创建在单个的“层”中,只能有一个动作能够被“激活”多个“层”同时工作,则每个“层”中被“激活”的动作则可以融合在一起融合的程度和方式由“层”的相关参数所控制单击“Animator”窗口“Layers”界面中的加号即可在当前的状态转换图中添加一个新的“层”如何对动画进行“部分筛选”要将“普通的行走动画”和“原地举枪射击的动画”进行融合,以得到“行走的同时举枪射击”的动画,需要对两个动画进行“部分筛选”要将“普通的行走动画”腿部部分筛选出来使用要将“原地举枪射击的动画”的上半身部分筛选出来如何筛选?创建并设置“AvatarMask”文件在动画状态转换图的“层”属性中指定“AvatarMask”文件如何融合——动画状态转换图中“层”属性的设置常用属性说明:“Weight”本层动画的权重,范围在0到1之间,数值越大对最终动作的影响越大“Mask”本层使用哪一个“AvatarMask”文件“Blending”融合方式,“Override”为覆盖方式,“Aditive”为叠加模式

温馨提示

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

评论

0/150

提交评论