中职《虚拟现实交互设计(基于Unity引擎)》(人邮版·2020)06交互界面、角色动画及战斗交互——异星猎手 同步课件(共44张PPT)

资源下载
  1. 二一教育资源

中职《虚拟现实交互设计(基于Unity引擎)》(人邮版·2020)06交互界面、角色动画及战斗交互——异星猎手 同步课件(共44张PPT)

资源简介

(共44张PPT)
虚拟交互设计
提纲
项目概览
1
游戏换装交互界面的设计和功能实现
2
角色动作及角色控制的实现
3
敌人角色的加入及其交互功能的实现
5
游戏管理功能的设计
6
游戏角色战斗功能的实现
4
01
项目概览
Part One
项目概览
通过实现本项目,读者将学习交互界面的功能实现、角色动画的应用、自动寻路功能的使用以及不同角色之间互动功能的实现。
02
游戏换装交互界面的
设计和功能实现
Part Two
本节学习目标
进一步了解UI对象的作用和结构
掌握UI与游戏对象交互功能的实现方法
本项目中的涉及的新UI元素——按钮
采用“Button(按钮)”对象作为换装操作的交互手段
“Button”对象的构成
Image组件 管理按钮的图形外观
Button组件 管理按钮的功能
Text子对象 管理按钮上的文字
“Button”组件详解
更详细的信息:
https://docs./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
角色动作及角色控制的实现
Part Three
本节学习目标
了解“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”组件的作用
掌握以复用的方式快速实现角色控制的方法
04
Part Four
游戏角色战斗功能的实现
本节学习目标
理解Unity动画状态转换图中“层”的作用及用法
理解Unity角色动画中“IK”的作用及用法
掌握利用动画状态转换图中的多个“层”实现不同角色动画(动作)的融合
战斗功能实现过程中对动画(动作)融合的需求
根本需求:
需要一个可以在移动过程中举枪射击的角色动画
现实困难:
没有现成的满足上述要求的动画,原因是本项目中的角色动画均复用自不同来源的资源包,没有针对本项目设计动画
现有条件:
有普通的行走动画,也有原地举枪射击的动画
解决方案:
可以利用动画状态转换图中多个“层”的叠加,将已有的两个动画融合,从而满足需求
Unity动画状态转换图中“层”的作用及创建
在单个的“层”中,只能有一个动作能够被“激活”
多个“层”同时工作,则每个“层”中被“激活”的动作则可以融合在一起
融合的程度和方式由“层”的相关参数所控制
单击“Animator”窗口“Layers”界面中
的加号即可在当前的状态转换图中添
加一个新的“层”
如何对动画进行“部分筛选”
要将“普通的行走动画”和“原地举枪射击的动画”进行融合,以得到“行走的同时举枪射击”的动画,需要对两个动画进行“部分筛选”
要将“普通的行走动画”腿部部分筛选出来使用
要将“原地举枪射击的动画”的上半身部分筛选出来
如何筛选?
创建并设置“Avatar Mask”文件
在动画状态转换图的“层”属性中指定“Avatar Mask”文件
如何融合——动画状态转换图中“层”属性的设置
常用属性说明:
“Weight” 本层动画的权重,范围在0到1之间,数值越大对最终动作的影响越大
“Mask” 本层使用哪一个“Avatar Mask”文件
“Blending” 融合方式,“Override”为覆盖方式,“Aditive”为叠加模式
练习
完成课本中实现游戏角色战斗功能的实操练习
重点体会和掌握利用动画状态转换图中的“层”融合多个动作的方法
05
敌人角色的加入及其
交互功能的实现
Part Five
本节学习目标
了解自动寻路组件的作用
掌握游戏对象之间战斗交互功能的实现方法
“自动寻路+触发器”实现敌人的自爆
“射线+碰撞器”实现击中判定
自动寻路的概念及实现思路
本课程中所说的“自动寻路”是指游戏对象自动接近目标位置,并且可以自动避开障碍物(包括静止的和运动的)的功能
实现思路
渲染一个“寻路网格”,以确定自动寻路的游戏对象可以活动的范围
在“寻路网格”内的可运动障碍物对象上加载“Nav Mesh Obstacle”组件
在自动寻路对象上加载“Nav Mesh Agent”组件和用于设置跟踪目标位置的脚本
寻路网格的烘焙
设置场景中充当地面的对象以及地面上静止不动的对象的“Static”属性为“Navigation Static”
在Unity的“Navigation”窗口中设置和烘焙寻路网格
寻路组件
借助寻路组件“Nav Mesh Agent”、寻路网格以及脚本,可以实现游戏角色对特定目标的跟踪
“Nav Mesh Agent”要加载在需要实现跟踪功能的对象上——比如本项目中的敌方角色“自爆机器人”
会移动的障碍物对象则需要加载“Nav Mesh Obstacle”组件
自爆机器人如何跟踪目标
用一个范围大的触发器实现跟踪逻辑,在控制脚本中进行以下工作
侦测触发器的“进入”事件,当该事件触发时,判断是否主角对象触发了该事件,如果是则将“Nav Mesh Agent”组件的跟踪目标设置为主角对象的位置
侦测触发器的“离开”事件,当该事件触发时,判断是否主角对象触发了该事件,如果是则让“Nav Mesh Agent”组件不再跟踪主角对象
自爆机器人如何“自爆”
用一个小范围的触发器实现“自爆”逻辑,在控制脚本中进行以下工作
侦测触发器的“进入”事件,当该事件触发时,判断是否主角对象触发了该事件,如果是则“自爆”
自爆机器人如何“输出伤害”
设计用于管理主角“生命值”的脚本并作为组件加载到主角对象上
在上述脚本中,设计根据伤害值扣减生命值的函数
在上述脚本中,设计判定主角是否“game over”的函数
在自爆机器人“自爆”时,调用主角对象的“扣减生命值”函数
当主角受到伤害或者“game over”时,更改其动画控制状态转换图中的相关参数值,使之做出对应的动作
练习
完成课本中实现“敌人角色的加入及其交互功能”的实操练习
重点掌握自动寻路功能
06
游戏管理功能的设计
Part Five
本节学习目标
掌握控制敌方游戏对象自动生成的思路和方法
掌握游戏胜负规则的判定思路和方法
敌方游戏对象自动生成的思路
设计“生成点”对象及“生成点”脚本,用于在“生成点”对象所在位置产生敌人角色
设计“游戏管理器”对象及“游戏管理器”脚本,用数组存储所有“生成点”
在“游戏管理器”脚本中控制生成点的工作状态
游戏胜负规则的判定思路
在“游戏管理器”脚本中
侦听敌人角色被摧毁的事件,当该事件发生时
更新“敌人被摧毁的数量”加1
判断“敌人被摧毁的数量”是否已经达到“最大敌人数量”,如果是,则说明所有敌人都已经被摧毁,在主角血量大于0的前提下,可判断游戏已经胜利
侦听主角对象受到伤害的事件,当该事件发生时
判断主角是否还处于“存活”状态,如果否,则说明游戏失败了
练习
完成课本中实现游戏管理功能的实操练习
体会和理解游戏管理的设计思路
总结-知识点
了解UI对象的作用和结构
了解“Animator”组件的作用
了解动画控制状态转换图作用
了解自动寻路组件的作用
总结-技能点
掌握UI与游戏对象交互功能的实现方法
掌握游戏角色的动作控制方法
掌握游戏对象之间战斗交互功能的实现方法

展开更多......

收起↑

资源预览