粉丝95获赞6613

hello, 你 好,我是唐老师,欢迎收看我的视频。本节课我们将学习 unit 入门当中工具栏和父子关系相关的知识点。 主要的学习内容呢,就是学习 unit 中上方工具栏相关的内容,以及我们场景中对象的父子关系相关的内容。 那首先我们来看工具栏相关,让我们把这儿直接截一个图,好,我们都不不进行讲解哈,然后就来到我们的 unity 当中,然后直接在 unity 当中来进行讲解, 打开我们之前的工程,是吧?然后要讲的内容呢,其实就是我们这上面啊,这些内容啊,这些选项,这里面有很多的内容啊,我们来看一下它分别都是做什么的。首先我们来看这个 file, 这个 file 其实就主要是来新建工程,新建场景,还有工程打包相关的。第一个这个 new sense 是 什么呢?其实默认,我们现在打开工程,我们知道这就有一个默认的场景,在这个 sense 里面,这个 simply sense 其实就是默认的场景。 然后如果我们需要新建一个场景的话,你点击一下 new sense, 你 会发现你看这这个场景里面的东西都没有了,是吧?没有了,这就是一个空的场景。那这里面主要提供的就是新建场景,还可以打开场景,你看 open sense, 然后可以选择一个场景打开,比如我选择我这个 simples, 然后打开它,然后就把刚才的那个场景打开了。啊,那这里面同样还提供了保存场景,比如说你看 ctrl 加 s, 或者你点击这个 file save, 就 可以把这个场景保存了。你看我现在假设我再创建一个,这样吧,我新建一个, 来三 d object 创建一个圆,好,在这个地方,是吧?这个圆在这个地方。然后你发现这个场景上面这有一个星号,看到没?这个星号就意味着这个场景发生改变了,我可以按 ctrl 加 s 对 它进行保存,那这个信息就保存了。但如果你看,我如果把它删了, 然后没有保存,是吧?然后我现在再重新双击这个 assets 里面的这个场景,你如果点击不保存, 你看他又把刚才这个信息加载出来了,所以这儿主要就提供新建场景保存场景。然后还有一个 safe as 是 什么呢?你可以另存为,相当于就是另存为的功能。看,我现在再随便取个名字啊, test, 然后保存,那就会发现这儿多了一个 test, 因为我刚才选择的就是存储在这个 sense 文件夹下,然后现在相当于这两个场景都可以打开。这两个场景其实是不一样的,你发现这儿有变化,看到没? 因为刚才是另存为,它就把刚才那个场景存储成一个新场景了,但是里面的内容都保留了,那么这个就是一个另存为的一个功能。好,那我现在先把这个 test 删了,还是同样按 delete 就 删了? 好, delete, 现在就留一个场景就行了。那你发现你删了过后,你看没?刚才打开了这个 test 又变信号了,然后我现在如果去打开别的场景,它会提示你要不要保存它,如果你点 save, 它又会弹出这个窗口,你看又把这个 test 保存了, ok, 那 你把它删了,然后重新打开别的,你就点不保存 啊?你看,如果你是开着别的场景删它的话,它就根本就不会提示你保不保存。 ok, 好, 那么这个就是场景啊,新建,然后保存相关的东西。那这下面还有什么? new project, 还有 open project, 还有 save project, 其实就是工程相关的了,刚才我们存的都是场景,那你看,我现在 new project 就会弹出新建这个工程的窗口,那 unit 其实是支持打开多个工程的啊。你看,如果我现在在这里面 open project, 如果去开别的工程的话,它其实是打开了,会把现在这个关了。但如果你想打开 另外的一个工程,你可以就通过这个 universe hop, 然后去点击另外一个工程,那就可以两个工程同时打开了。 ok, 如果你在这里面打开的话,它会把现在这个关闭掉,然后重新去打开新的,这要注意了。好,然后同理这个 cf project 就是 把这个工程保存一下。 好,那其实一般情况下我们都不会去用这个 set up 这个的,因为保存这个场景内容其实就保存了。你这个工程关的时候,除非是崩溃,可能会丢失一些信息,只要是正常关闭都不会有任何问题。好,那么现在了解了上面这些简单功能,那我们就来讲关键了,这里面关键呢就是这个 build setting, 这里面提供的就是打包相关的功能,我们目前不会去细讲,它只是了解它,在这里面可以来进行打包。你看这下面有各种平台的打包, 那现在但是不能打包是因为我没有安装对应的那个打包工具,但是 pc 的 你看是可以打包的。 ok, 好, 那我们先在这了解一下,这个 building setting 是 可以来进行项目打包的一个入口。 好,那给它关闭掉,那么第一个这个 file 相关的核心内容就讲完了,下面这个 x, 这个 x 其实就是退出我们这个工程,我这就不用赘述了。好,那我们接下来就讲第二个这个编辑操作 对象,编辑操作相关工程,设置引擎相关,那什么意思呢?它主要是用来操作我们这个窗口里面的对象的,你看现在我的这个窗口的对象焦点,你看这是蓝色的 project 是 焦点,我可以选择这个 hierarchy, 就是 我们的焦点,那他们两个这个焦点是可以相互切换的,你看没啊?重新来一次误 区。好,那你看,我现在是可以相互切换的吧。这个焦点,那我选中哪个焦点的时候,然后这个 edit 里面 我选择这个 snake o, 它就可以选中这里面的所有对象啊,相当于它就是选择所有对象这样的一个概念。快捷键就是 ctrl 加 a, 你 看你选中哪个窗口, ctrl 加 a 就 可以选中这所有的对象,所以这里面的操作主要就是一些这个窗口里面的一些操作。 那具体这里面很多东西其实我觉得都没有必要讲,那我就讲一些重点的东西,常用的东西啊,常用的东西。首先 ctrl 加 z 是 什么?撤销,还有一个 ctrl 加 y, 就是 取消撤销的意思。什么意思啊?你看我现在啊,把这个删了,然后 ctrl 加 z, 然后再 ctrl 加 y, 你看相当于就在这两步之间来进行变化,那这个步数的变化的感觉, ok, 也就这样的理解,一个是撤销,一个取消撤销。好,那么接下来这个选择所有刚才我都给你演示了,那下面什么拷贝啊,然后剪切啊,然后粘贴啊这些操作,那都是最基本的操作了,我都不讲了, 那下面这个 ctrl 加 d, 大家都知道是克隆一个,然后重命名,然后删除。因为这这个 edit 前面的这部分功能,其实之前在讲这些窗口的时候,很多都已经讲了,就是粘贴、复制,然后克隆,然后删除重命名相关的内容。好,那么下面这有一些什么呢?这个 f 还有 shift f, 哼,其实大家之前也了解过啊,你看 f 什么?你看我选择这个 f 啊,相当于就是看向它嘛,之前就讲了选择按 f, 选择按 f 就是 看向它,然后这还有一个啊,这个 shift f 是 什么意思呢? 就之后我们场景上的对象可能会移动,那如果你用 shift 加 f 的 话,它就会跟着它动。什么意思?就这个东西,比如说它会一直动,动动动,然后如果你用 shift 加 f 的 话,它就会一直跟着它动,因为之后我们的代码 可能会让一个对象不停地去移动它,那 shift 加 f 就 可以让市口一直盯着它动好。然后这个 control 加 f 其实就是这儿搜索对象啊,就直接它就会把焦点放到这儿来,你就可以在这儿快速地来进行搜索。 所以这个 edit 里面前面部分的内容我再说一次,其实很简单哈,我都没跟你细讲,就是大概的在讲,是吧?然后 ctrl 加 p、 ctrl shift p, 还有 ctrl alt p, 其实就是对应的这三个按键啊,就是播放暂停和逐帧播放,这对应的快捷键就是这三个。 好,那下面这个东西哈,这个是什么?好,我告诉大家,这个是一个编对哈,这个编对是什么意思呢?你看,好,首先我们来看这个编对的快捷键, ctrl 加 alt 加一就是编一对,然后 ctrl 加 shift 加一就是选中一对。你看我比如说我这儿选一堆东西 啊,选一堆东西,然后 ctrl 加 alt 加一,好,我相当于就给它编对了,然后我现在取消选择,然后 ctrl 加 shift 加一 看,我就可以把刚才编对的东西全部选中。但这个功能其实就因人而异吧,反正我用的比较少,但如果你在做一些复杂东西的时候,你可以在这里面编对,然后帮助你快速的选择一些东西。 ok, 好, 这个了解就行了。 然后下面啊,关键是这下面的这几个选项。那首先我们来看这个 project setting 这个东西对于我们来说有什么作用?点击一下, 好,这个名字你熟不熟悉?先看一下 project setting, 你 是不是之前在哪儿看到过这个名字啊?那我们打开我们的这个 assets 文件夹是吧?然后这里面 assets 同级文件夹有个 project setting, 还记得当时我在讲的时候我就提到过,以后我们会再来提及它吗? 其实你发现这里面 project setting 文件夹当中的这些内容和这个窗口上的这些内容的名字都差不多的,是吧?那我告诉你,你在这个窗口上面进行的一些设置,最终的数据设置,相关的内容都会存储到这些文件当中。 比如说哈,我们就来看我们目前需要用到的就是这个 tags 和 layer 熟不熟悉,我们之前不是在这个对象这儿,这个 tags 和这个 layer 讲的时候就提到这 a、 d、 d layer 嘛,其实改的内容改的是什么呀?改的就是这个 tags 和这个 layer, 你 看我们现在这里面有一个 monster, 然后这个 layer 里面有一个 player monster, 是 吧?那好,那我们来到这个文件夹当中,我们通过一个文件编辑器,我们把这个 tag manager 打开 好,我们就用这个 sublite text 给它打开,你会发现这里面的内容你看见了这个 text, 看见没?这有个 monster, 然后这个 layers 这里面有个 player monster, 比如说这里面的这些设置相关的信息,它都是以特殊的文件格式存储成了这个 unity 对 应的这个 asset 这样的一个格式的文件。这里面的信息保存的其实就是你在这个窗口上面的一些基础设置, 如果我们把这里面的这些文件删了,那你之前的这些基础设置,比如说这个 tag 和这个 layer 就 会丢失。 所以我之前提到这个 project 这个 setting 文件,虽然它可以随便删,这个 unit 会给我们自动创建,但是如果你把它删了,它会丢失一些关键的配置, 比如说这个 tag 和 layer, 如果你给删了之后的这个对象里面,我设置过这个 layer 或者这个 monster 的 这些对象,那么这上面的这标签和这个层级都会丢失, 所以大家一定要切记,这个 project setting 的 文件其实也挺重要的。好,那么目前这里面你看到有很多的信息,这里面包括了一些什么音效的设置啊,输入的设置啊,物理相关的设置,还有玩家的设置, 但目前我们都不会去讲解,等以后我们讲到对应的系统对应的内容的时候,再来看它们,目前只需要掌握这个 text 和这个 layer 的 设置就可以了。好,那么这个就是 project setting, 就是 工程设置相关的内容。那我们接着再来看下一个重要内容,就是这个首选项,那我们选择它。 好,这个首选项里面也有很多内容,你发现,那我只给大家讲解这里面目前会用到并且很重要的两项,第一个就是这个开发工具相关的内容。 好,这里面你看这个是什么? resource studio 二零一九,就是你可以在这改变你编程用的这个 id 一, 我们默认使用的就是 resource studio 二零一九,如果你使用的是别的 id 一, 你可以在这进行改变。比如说我 这个电脑上还装了一个 vs code, 你 可以改变。然后如果你还有别的这没显示的,你可以点击这,通过这个文件夹去浏览它,你只要找到你这个 id 一 的可执行文件,然后关联起来,你之后写代码,就可以用你对应这设置的这个 id 一 来进行一个编辑代码了。 那这个 id 之前在讲那个 capp 的 时候就讲了,什么意思?如果你不懂的话,你就去百度一下,或者看一下之前的视频回忆一下啊,其实就是我们这个开发环境嘛,一个编程的一个编辑器编辑软件。好,那么接下来这个明白了哈,下面这些选项你都不用管,只用管这个设置。 然后接着一个关键的信息啊,就是下面这个 languages 啊,就是我们的语言相关的东西啊,这个就是英文不好的同学的一个辅音了。啊,什么意思?之前还记得我们在安装的时候选择了一个简体中文吗? 其实现在的新版本的 unity 都支持我们。啊,中文版什么意思?你选择它过后,整个界面上大部分内容都会变成中文,我这就不选了,因为选过去,你再变回来要重新打开才行。 好,这个英文不好的同学可以使用简体中文来学习和开发,但是我不建议大家使用。为什么呢? 因为如果你使用了,虽然你感觉啊都变成中文,你都看得懂了,很多都看得懂了,但他这个翻译并不完全,就这里面很多个东西还是英文的,只有部分会变成中文啊,但是变成中文的一部分,比如说这 transform 上面的 position, 这个 rotate 型,还有这个 scale, 都会变成中文,但这个其实会影响你的学习。为什么?因为之后我们会通过代码去控制这些变量,它都变成中文了,你就不能去通过写代码的时候,通过中文去调用这些变量啊? 我们在调用变量的时候只能通过英文,所以这儿变成中文了过后,你要找这个脚本上面关联的这个变量是什么你才知道哦, transform 点儿什么才能点儿出位置, 那么这样很多脚本都会受到影响的话,那就不异于你的学习了。所以我在教授的时候,我都会使用这种英文版来进行教授,因为我们写代码都是写英文嘛,你就要养成学习英文的一个习惯,不要畏惧英文,你看多了,你自然就认识了。好,我这就不切换了。好, 那么这个就是我们这个首选项,这个窗口当中重要的一个是开发工具的设置,一个是这个语言包的设置。好,那么我们这个 edit 页签当中的内容 就算是讲解完毕了哈,重要的东西讲解完毕了,后面还有几个不重要的,比如说我们的这个啊,快捷键的设置,你点开它过后,可以在这进行一些快捷键设置,看到没?你如果设置成中文的话,这里面看到的还是英文,所以你设不设中文,哎,我觉得影响都不大好。那么其他的话,还有 下面的什么 clean or 什么预设体相关的东西,你这个东西先不用管,以后我们再来讲,因为一般不会用,下面还有渲染相关的东西也不用管。然后最后一个选项有点意思,先点开它, 最后一个选项是设置什么格子的默认宽,还有不长相关的东西,你看注意这上面的变化啊,现在默认是一,我给他改成二, 看到没?看到这个 sense 场景上这个虚线变成再变大,看到没?五变成一,相当于就可以改变这个格子的单位,默认是一米为单位的一个立方体,就是一格啊,也是一的一个单位,可以这样理解啊,这可以改变默认的这个啊,格子的大小,这上面 那下面这个是不长。零点二五什么意思?之前我们按住这个 ctrl 键去移动它的话,每移动一格,你注意这个 z 轴的变化都是零点二五,看到没 啊?如果我把这改成,比如说零点五,好,我按住 ctrl 键,然后再动它,看它就零点五零点五的变化了,所以这个地方可以改变,你按住 ctrl 键的一个最小布长。好,那下面同理 这个是按住 ctrl 键的一个旋转布长,还有这个是缩放的布长啊,来,你看我切换成我们的旋转,然后我现在按住 ctrl 键,然后去旋转,它都是十五度,十五度变化的,注意右侧的 inspec 的 窗口,注意,这,你看它都是十五度十五度变的,如果我给它改成二十, 那同理它就会是二十度二十度的变,看到没? ok, 所以 这个地方啊,你只要理解,在这可以来设置,我们按住 ctrl 键在移位移旋转缩放的一个最小布长,然后还有一个格子的大小啊,但一般情况下我们都不会去改变它。 好,那讲到这的话,我们这个页签才算是正式讲完了。好,那我们接下来就看我们的下一个,我其实已经把最重要的两个页签讲了哈,后面的页签其实都不是特别麻烦了,你了解一下就行了。那我们接着来看我们的这个 assets 页签,它是一个资源操作,基本等同于这个 project 窗口中右键相关功能。好,那我们就带着这样的一个思路来进行一个学习。首先你来看这个 create 里面创建相关的东西,我们截个图哈,然后截个图,然后和这个 project 里面来对比,你看 project 窗口点加号,这里面的显示内容是不是一模一样的? 就是你可以通过页签那个地方来进行一个创建,也可以在这个工这个 project 这个工程窗口当中来创建。你看这右键其实内容也是一模一样的,是吧?所以这个这个页签对于我们来说用处不大,为什么?因为这个 create 我 们在这都能做了,我干嘛还要在这来多操作啊?太麻烦了是吧? 那还有一个下面这个 show in exporter, 哈,这个什么意思呢?选中它,你看它打开了,默认就把这个 sets 这个工程文件给打开了,所以这里面其实也能做这样的操作嘛?我在这右键啊, 在这个文本这个管理器里面打开也是一样的呀,所以这个选项的前两个东西对于我们来说就没什么用了。然后这还有一个 open open 的 话,就是打开资源啊,就是我们双击一个对象也可以 open, 你 看我现在 open, 然后你双击他也可以打开,所以你在这里面做的操作,这都能做,所以这里面显得就比较鸡肋了。你看删除重命名,还有拷贝他的这个路径,是吧,我们暂时其实在这都能做,你看右键 啊,删除重命名,然后拷贝,是吧?所以这个上面的这几个选项对于我们来说都没什么意义。那下面的这些东西有什么导入包,然后导出包这些内容我们就留着之后再讲,那个包导入导出的时候再来进行一个讲解, 那么其他东西还有什么刷新啊?这些内容其实都可以在我们右键,你看这都能够操作, 所以之后我们这里面的内容哈,都会在这个 project 讲解的时候就一起讲解了。所以这下面的内容暂时我们就不提及它了,因为讲了你暂时也用不到它。 ok, 好, 那我们这个页线就 ok 了,就是它能做的事,你这个 project 里面都能做,所以我们一般不在这来使用它,那么接下来这个 game object, 你看这个 game object 这个页签是干嘛呢?是对象操作,基本等同于这个 hierarchy 窗口中右键相关功能。好,你看我们这儿 game object 了,我点击它,是吧?然后我这截个图, 好,然后这个 hierarchy, 然后你看我这右键,你看这右键,这个创建三 d 物体,二 d 物体什么特效?这些东西和前半部分这是不是一模一样的?你看 这创建一模一样嘛?然后这还有些操作相关的内容,所以这前半部分的内容我也都不讲了,因为我们之前在讲这个 hierarchy 窗口的时候,这些都提及过,就是创建一些系统,提供好的一些,就是指定的一个对象嘛,那但这里面有一些别的内容。好,注意了,下面这些内容我们就来讲解一下。 下面这些内容要选择我们这个 hirekey 上面的对象,我们才能进行一些使用,比如你看智慧的,我们暂时都用不到,是吧?然后这下面有什么 move 这个 value 什么意思?你点一下, 你看这个 move value, 点了过后,你发现这个对象变位置了,看到没?那什么意思呢?我现在在选中它。 好,然后我把这个适口放到这,然后我再来点击这里面的这个 move to video, 它会把你选中的对象放到我们摄像机的这个中心点来,你可以这样理解,就是在场景这个适口位置的中心点,你看我现在再换一个位置看, 然后我再点击它快捷键,就是 ctrl alt 加 f。 好, 你看我选中它,然后 ctrl alt 加 f。 好, 然后我再换个位置 好, ctrl 加 alt 加 f, 就 可以直接把某一个对象放到我们这个市口中央来,它就这样的一个功能。好,那你记住这个快捷键就行了,就是 ctrl alt 加 f, 然后还有一个这个 ctrl shift 加 f, 什么意思呢?你看我再选一个对象,好,选择这个上面的对象吧,然后按这个。 好,然后 ctrl shift 加 f。 好, 注意了哈,你看现在多了一个框,这个框是什么?注意,我们现在移动一下,你看没,他把这个对象放到了我们当前摄像机观察的这个视口位置,相当于把这个对象和我这个视口位置重合了,你看再 ctrl shift f, 然后就放到了我这个适口的位置,其实我这至之所以能看到,你可以理解也是一台摄像机的感觉。看,我在移动摄像机,然后按了过后,他就把这个对象和这个摄像机重合。 ok, 常用来干嘛?常用来设置摄像机,你看我现在在这设好了,这样看是吧?然后我选中摄像机。 好,然后我再再按这个 ctrl shift 加 f, 注意看这个 game 窗口,也就是说我这个功能主要可以快速的来设置我们摄像机的位置,可以让这个摄像机看一下,和这个 sense 窗口上看一下的东西是一样的,你看我再来选中这个摄像机,一定是选中摄像机, ctrl shift f, 你 看下面这个,我们的这个 game 窗口也就变了,所以它的功能主要就是用来快速设置摄像机相关的。好,那么接下来其他的功能呢?你看我再点它,然后再按一下 啊,就直接把它居中了,看它的 z z 轴的正方向,选中一个对象,哎,再来选下面这个, 点击一下看,直接就选看向它的 z 轴的正方向了。 ok, 好, 那么现在就大概了解了这里面下面这三个选项,一定是选中了对象,它才能够变,变出颜色,才能够去使用它。然后最后一个其实就是失火激活,你看我点一下, 你看这个对象就失火了,那一般情况下也不会在那操作,在这操作就行了。所以在对于我们来说,这里面你只需要记住几个快捷键,就是 ctrl alt 加 f, 把一个对象移动到市口的中心点,然后 ctrl shift 加 f, 就是 把一个对象移动到和当前市口重合就可以了。好,那么这个 game object 也就讲完了,那我们接着就来讲下一个我们这个 component 相关的内容,还是打开来看一看。 好,这个 component 就是 脚本操作,就是 unit 自带的脚本,可以添加各系统中的脚本给对象。好,那我们现在就来看它相关的内容, 看到它的话其实也不会陌生啊,你看我选中一个对象,然后点击它,它这上面这些东西就全部有颜色了,但是如果我没有选,我选中它,你看全部置灰的就是它,相当于是 给我们选中的这个对象去添加这些系统自带的脚本的。那其实我们之前在这,在这个 explorer 窗口下面这个 a、 d、 d, 这你看 已经看到过了,这儿也是可以去添加这些脚本啊,比如说有两种方式可以给它添加系统的脚本,一种是在这儿 add component, 一 种就是在下面这个 component 页签这儿来进行一个添加。你看比如说网格相关的东西, 特效相关的东西,物理系统相关的东西,音效还有视频,然后还有各种各样啊的脚本,都可以在这来进行添加,就是直接 unity 写好的脚本。好,那么这就是添加脚本的一个作用,你看我随便选了一个物体,我随便添加一个吧。比如说添加一个例子系统, 你看添加了过后他就开始冒粒子了,只不过没贴图是吧?但是你看这脚本就多了一个粒子系统的脚本,那我们现在可以在这右键,然后 remove 把它移除了。好,那也就是说这个很简单,就是在这可以添加脚本。 好,那么接下来我们就看下一个 window, 那 么这个 window 呢?就是可以打开 unity 各核心系统的窗口,就这样的一个作用,你看我现在点击它,这里面有各种各样的选项,是吧?有各种各样的窗口,我们知道之前打开 console, 就是 在这儿这个 generate 这里面打开这个 console, 你 看就可以打开一个窗口了。 然后这里面还有各种各样别的系统的,比如说我们的动作系统,你看这个是一个动画窗口,以后我们在学习对应系统的时候,才会频繁地来使用它来开启这些窗口。 目前你只需要记住这四六个窗口就可以了,都可以在这个 generate 里面去打开这六个窗口。这里面还有一个重要的窗口,就是这个 asset store 哈,就是我们的资源商店,就是 unit 内部其实提供了一个这种资源商店的一个窗口, 它就会去连接我们的,就是 unit 官方的一个资源商店,这里面有别人提供的一些第三方插件,还有一些资源在上面进行一些售卖, 大部分是要钱的,但是也有很多很多的免费的资源,所以大家可以打开它,然后在这里面来进行一些资源的搜索啊,你打开它就是一个英文的界面,然后因为这个服务器在国外,所以它比较慢。 然后以后我们比如说下载这个 unit 默认的一些资源,我们就会通过这个窗口来进行下载,我这就不给你演示了。以后我们用到它的时候再来讲,你现在只要知道这个是一个资源商店就可以了。 好,那么其他的话也就是我们到时候用到再来讲解的。那么接下来就来讲解最后一个这个 help, 这个 help 对 于我们来说在这可以干嘛?比如说就可以看到我们这个 users 的 版本,你看二零一九,四点一八,然后还有一些什么说明啊, 相关的信息,然后还有还记得我们最开始在下载的时候有一个文档的下载,还记得吗?这里面这两个选项其实就是文档相关,你点击了过后,我这已经打开好了,它打开的很慢,它就会打开这个本地的文档,这个文档就是 unit 官方的一个教程, 一些说明,每一个系统的教程的说明。还有一个哈,就是我们的 api 的 说明啊,都是英文的,但如果你在官网去看的话,就是 uni 四中国去看的话,它就会是中文的。之后我们用到的时候我会专门的再给大家讲解,特别是这个 api 的 这个说明。好,你现在了解就行了, 就是下面的这两个选项,就是开启官方提供的一些说明文档或者一些教程文档,那下面的这些各种各样的选项对于目前来说都没有什么作用,都是以后我们用到了再说啊,这个 help 里面的东西暂时你都很长时间都用不到。 ok, 好, 那么讲到这儿的话,其实我们今天的上面这一溜就算是讲完了,我把每一个核心的重点呢都已经给你讲了。那我们回到我们的 ppt 当中, 我们最后来进行一个总结,就是在我们的这个工具栏中,这个文件这个选项当中 building setting 啊,工程发布相关的比较重要。然后这个 edit 当中重要的就是我们的 project setting, 就是 工程的各个系统的设置,目前只有那个标签和层级在这里面会用到,其他的我们都是到时候用到再讲。 然后还有我们的首选项可以设置我们的编程软件,还有我们的语言包,是吧?然后 game object 当中的重要选项就是几个快捷键, ctrl shift 加加 f, 还有 ctrl alt 加 f, 然后其他的几个选项你看我都没写,我就觉得不是特别重要的,你只要记住这些 就可以了。好,那么我们工具栏相关的知识点就讲完了,我们接着就可以来讲解我们的下一个知识点,对象的父子关系。 那么同样我们还是讲解完 ppt, 然后再到 unit 里面进行操作。那我们来看一下这个对象间的父子关系是什么?就是何为父子关系, 就是类似右侧的这种竖形结构,便称物体之间存在父子关系。我们知道在这个 hirekey 这个窗口当中,我们可以拖动它们,我们可以把一个对象拖动到另外一个对象下面, 那么这样我们就可以说他们有父子关系了。比如说现在的这个二是一的子对象,三是一的子对象,然后四是三的子对象,那么同时他也就是一的子对象了,因为相当于就是子对象的子对象,那肯定也是一的子对象,那么这样的一种竖形结构其实就是一个子对象。 那你可能不理解这个竖形结构什么意思啊?你看我现在给你画个图啊,现在比如说一个一,是吧?然后他的子对象有二 啊,还有一个子对称是三,看到没?那不就是一个二叉数吗?是吧?然后现在又有一个四,四是三的子对称,那现在这个四就是三的子对称,那不这就构成了一个竖形结构吗?所以我们虽然看起来是这样的一个列表的这种状态,但其实它内在的引含的就是一个这样的竖形结构, 那么我们就说他们之间是存在父子关系的,那么我们就说他们之间是存在父子关系哈,他们有什么样的影响? 就子对象会随着负对象的变化而变化,子对象 inspector 窗口中的 transform 信息是相对负对象的。然后第三点是 sense 上面的这两个选项,它们的作用是什么? 好,那我们现在就截一个图哈,截一个图,然后来到我们的 unity 里面来进行一个具体的讲解,那最小化我们的 ppt, 然后打开我们的 unity。 好,我们现在有知道父子关系的,是吧?那我们先保存一下当前这个场景,然后我新建一个场景。好,新建一个场景过后,我们就来看这上面写的这几条。我首先创建一个副对象,比如我就创建一个 q, 好, 注意了这个 q, 然后我再在这个副对象的基础上再创建一个子对象,我可以选中它,再右键我再创建一个 q, 好, 然后我把这个下面这个 q 的 位置移动一下, 好,移动到他旁边。注意了,第一点就是子对象会随着副对象的变化而变化,你看我副对象变化, 我现在先把上面这个磁铁取消,然后我移动这个副对象,你看子对象就跟着他动了,然后我旋转我的副对象,子对象也跟着他动了,我如果缩放我的副对象,子对象也跟着他动了。也就是说只要副对象变化了,那子对象都随着爸爸的变化而变化了。 那么我们第二点来看子对象这个 inspector 窗口中的 transform 信息是相对负对象的。什么意思啊?你看,我们现在先把这个负对象制成零零的位置。 好,那么现在我们看子对象它这个 inspector 窗口上面的 transform 这个位置信息,现在零零的话,就是和它重合,是吧?那我现在一个好五零零,那相对于负对象的位置就是 x 偏移了五个单位啊。注意了,我现在如果去改变我负对象的位置, 其实你会发现子对象这显示的还是五零零,但实际上它相对于世界坐标系的坐标已经不是五零零了, 为什么?因为它要加上我负对象的位宜嘛。所以第二点你一定要记住,子对象 expect 窗口中的圈子 form 信息是相对负对象的 啊,它是相对于负对象的位置,看,我现在变它的话,都是相对于负对象的,你看零零,它一直都是零零,你这个负对象移动的话,它始终是零零,因为它是相对于负对象的。但是如果你把它们的父子关系破坏了,怎么个破坏法?你可以把它拖出来, 你看拖到另外的位置,他们就不是父子关系了。你看他这上面显示的内容,你看 z 就 有值了,那这个时候才是他相对于世界坐标的位置,那你再把他拖成他的子对象,你看坐标又变了,所以第二点这个 非常重要。那还有一种方式怎么看呢?你看,注意这上面这个 inspector 窗口啊,注意 inspector 窗口右边这个三点的地方有一个。第八个,看到没? 你选中这个 debug, 就是 我们的调试模式,选中过后你会发现这窗口上面的信息都变化了,看见没?注意了,变化了。这个 position 的 名字变成什么? lock position, 就是 本地的坐标, 从这这个名字就看得出来,他这个坐标其实是相对于负对象的一个本地坐标。这个地方一定要记住啊,你可以通过这切换来看来加深一个印象,但一般情况下我们我们还是给他选成普通模式的,这样来看,但你要知道这里面显示的坐标啊,角度啊,都是于相对于负对象的。 那你看我现在负对象,如果旋转它这上面旋转还是零零零,但你把它拖到事业坐标系上面,你看它又是有有值的。 ok, 所以 这个地方第二点你看,我讲了很久,因为很重要。然后第三点这个 sense 上方的这两个选项的作用,注意了, 我选中,选中这个 cube, 是 吧?如果我把这个第一个选项,你看我点一下,点成 center 的 话,你看在我们这个 sense 场景上,它这个中心点不再是这个负对象的中心点了,不再是我选中这个对象的中心点了。它是谁? 它是相对于和自己子对象一起算它们之间的位置进行一个计算,算出了一个中心点。所以如果你想要就单独改变副对象的这个位置,比如说角度啊相关的东西好看一点的话,我建议你就把这切成我们的这个 pi v o t, 就 相对于自己的 如果有子对象的情况下,你看我现在再复制一个子对象,然后把位置改一改好,然后我来切换这,你看 这个中心点就变到这来了,看见没?他始终是根据这个对象之间的关系来算的一个中心点,所以如果你发现中心点显示的有问题,那肯定是受到了子对象的影响,或者是受到了你这选项的这个影响,这会影响他的显示的。 ok, 好, 那默认我建议大家选择这个 p i v o t, 然后还有一个 global, 什么意思啊?你看这上面的这个坐标显示的都是相对于我们的这个世界坐标系的,那我之前就讲过切换它的话,其实这就会显示什么,相对于自己的这个坐标轴的一个坐标系方向。 ok, 那 这两个选项对于我们这个父子关系的时候的设置的时候也是非常有用的。好,那么讲到这的话,其实父子关系你就明白了吗?就是父亲动,儿子会跟着他动,然后界面上显示的内容都是相对的一些坐标和旋转的角度,然后还有这上面这两个选项对于他的影响和作用。 好,那你现在就知道什么是父子关系了,是吧?那对于我们来说哈,父子关系有什么用呢?他可以方便来管理一些东西啊。举个例子,我们现在打开之前的这个场景, 好,然后我不保存这个新场景,我们之前不是创建了我们这个 q 吗?你看这一堆东西在这个场景上看起来太复杂太麻烦了,是吧?那这种时候为了看着轻松的话,我可以注意我在这创建一个空物体。 好,空物体我先把它的位置设成零零啊,保证它和第一个这个位置是重合的,看见没?然后我给他改个名字,就叫金字塔,我改中文都可以看金字塔。好,我这是讲解哈,但是不建议大家改中文,看,我把这些所有的对象拖成他的子对象, 那这样就方便管理了呀,那因为这个子对象会跟着副对象一起动,是吧?那你看我现在如果去改变这个副对象的位置,所有东西就跟着我一起动了,我改变副对象的旋转, 所有东西就跟着我一起转了,那这样我控制对象的时候就更方便一点,所以这个父子对象对于我们来说非常非常的重要哈,所以你这个知识点一定要掌握。我这还给你举了个例子,这个例子就给大家表现出了这个父子对象对于我们的一个好处,然后在移动时候的一个方便性,旋转时候的一个方便性, ok, 好, 那么这个父子对象也就讲完了,那我们回到这个 ppt 里面,那我们今天这个工具栏和父子关系相关的知识点就算讲完了,那我们最后来进行一个简单的总结, 这个上方工具栏目前只需要记住工具栏中的几个重要选项就可以了,哪里打包程序,哪里设置编程软件,哪里可以打开其他窗口,这是我们目前可能会用的比较多的 这个父子关系啊,需要记住的就是对象之间产生父子关系后是如何相互影响的,就是爸爸干嘛,儿子干嘛, 儿子干嘛,爸爸是不管他的是吧?他随便动,这个爸爸不会受他影响的,但是只要爸爸一动就牵一发就动全身了。 那么今天的知识也就讲完了,那么最后还是留一道题给大家,那么你可以进行一个截图,然后进行一个练习,我会在下一个视频当中进行讲解,那么今天的内容到这就结束了,谢谢你的聆听,敬请期待我的下一个视频再会。


说到游戏开发,我们就不得不提到游戏引擎。游戏引擎作为存在游戏的火星组件,大大降低了游戏开发的门槛。 unity、 unreal 自然是当下最火的两大游戏引擎,其他的还包括不少私有专用轻量级的游戏引擎。最近完全开源商人免费了个 dog 也大获了一把。 今天我们的主题是 unit, 也是我比较推荐新手去学习使用的。首先它的界面简单直观,学习曲线也比较频繁,除了可以用作游戏开发,还可以胜任各种可视化类型的应用,包括仿真动画、 a 二 v 二等等。 安装 unity 的一种常见方式首先就下载一个 unity hub, hub 是一个用来管理不同 unity 版本的工具,通常不同的项目会用到不同版本的 unity 引擎。使用 hub 来自动化安装和管理可以帮我们介绍 时间。我们打开 hop, 首先切换到这里来安装选项卡,点击上面的添加按钮来安装一个 unit 版本。我们可以选择最新的版本,或者选择 lts 来安装一个长期支持版本, lts 通常会更稳定一些。 如果我们不打算去手动配置 ide 的话,这里我们可以直接安装 visual studio。 如果你想将项目部署到 angelate、 ios 这些平台上面运行,可以勾选这里的选项。最下面是可选的本地文档和中域元包。点击下一步, unity help 会在后台自动下载安装,这里需要等上一段时间。 安装完毕之后,我们回到工程选项卡,点击右上方的按钮创建一个新项目。左边可以根据需要选择不同的模板,就是我们选择默认的三位即可。最后修改一下这里的工程名,然后点击下方的创建按钮,数字化工程 需要等上一段时间。随后我们来到 unit 的主界面,这个界面也被叫做编辑器 editor。 首先,中间的这个区域选出了我们的三维场景。和一般的题目软件一样,我们可以点击鼠标选择场景中的物体。 拖拽鼠标可以同时选中多个物体。发动鼠标滚轮可以对画面进行缩放。按住 alt 并拖拽,鼠标会沿着中心点旋转。 同时在最左边的面板中以树形结构列出了场景中的所有物体。如这里可以看到场景中仅有的两个对象,摄像机和平行光源。同时我们也可以直接在左边的列表中进行物体选择。 当物体被选中时,最右边的面板中会显示这个物体的所有属性。这里的内容直接取决于你选中的物体。最下方的面板中显示了工程中的所有文件,目前我们的项目空空如也,里面只有 一个场景文件,也就是我们这里看到的空白场景。最后,屏幕上方的三角形按钮允许我们在编辑器中运行测试游戏快捷键是 control 加 p, 再次点击它会停止游戏。以上便是 unit 主界面的基本介绍, 接下来我们讲一下场景中三维物体的创建。我们可以在左侧面板中点右键,菜单中可以看到不同的类别,比如三维物体特效、光源、音频、视频等等。 在成为物体的紫菜蛋中,我们可以找到各种基本的体和形状,比如立方体、球体、圆珠体、平面等等。下面还可以找到诸如文字、地形这些复杂的物体, 这里我们先创建一个球体来做示范。讲到这里,我们就不得不提到 unity 中两个相当重要的概念。我们在场景中看到的所有物体,在 unity 中都被叫 叫做游戏对象 game object。 比如这里的球体是一个游戏对象场景中的功能性物体,比如摄像机、光源也是游戏对象。而每个游戏对象由不同的组件 component 构成。 在右边的面板中可以看到这个球体由 transform, miss, filter, collider 等等构成,每个组件会提供不同的功能, 比如 transform 定义了我们物体在场景中的位置,而 mesh renderer 就用它的名字,是用来确认三维物体的。如果我们禁用掉这里的 mesh renderer, 可以看到这个物体在窗口中就直接消失了。 总而言之,一个场景可以包含各种不同的游戏对象,而每一个游戏对象有不同功能的组建构成。除了可以选像球体这样基本的结合形状,我们也可以从外部导入各种三维模式文件,比如从三维建模软件中导出成 f b x 格式,直接拖拽到 unit 中使用。另外,像 sketch, fab, turbos、 greet 这些网站上也可以找到许多免费高质量的三维模型。不过大家在使用的时候需要留意一下版权许可。 在 unit 商店中也可以找到官方提供的各种工程模板,里面包含了不仅有模型场景找本,还有可以直接拖拽使用的预设,他们同时也是非常不错的学习资源。 我们回到主题,先来讲一下最最基本的 transform 图件。首先我们可以在这里直接输入物体的三维坐标,沿着 x y z 轴的旋转角还有 x y z 方向上的缩放。我们也可以直接在场景中拖动这一箭头来修改。 左上角的这些按钮允许我们切换不同的工具。快捷键是 q, w, e, r, 他们分别用来对物体的位置旋转和缩放进行调整。 因为在左侧的面板中,我们可以将一个游戏对象拖拽成另一个游戏对象的自己脸,这样所有的自己脸会随着父亲一同移动、旋转和缩放。比如这里身体的运动会同时带动手臂的移动。 接着我们来看一下之前提到的另一个组件, mesh renderer, 我们知道它是用来渲染 several 提到或者更专业的术语叫 mesh 三角网。 mesh renderer 中有一个非常重要的属性, material 材质。 材质直接决定物体表面的外观,与他相关的设置也直接显示在面板的最下方。这里的材质由于是 u 立体默认创建的,我们无法直接修改。 不过我们可以在下方的工程窗口中点右键创建一个新材质并拖拽到物体上来使用。这里我们可以修改材质的颜色或者指定一张纹理贴图,并且我们可以 数字材质的金属属性,光泽度,发型贴图,高度贴图等等。另外,这里的下拉框允许我们切换不同的 shira 程序。 shira 是运行在 gpu 上的代码,里面包含物体表面的光照和颜色。计算 最基本最常用的 shader 自然是这里默认的标准光照模型。不过我们也可以选择其他的 shader 程序,比如 unit shader 不会参与光照计算,因此不会产生阴影。我们也给自己选一个 shader, 或者安装第三方插件,比如使用卡通画确认的 shader 程序来实现各种不同的视觉效果。 如果我们想给游戏对象添加其他的组件加入更多的功能,我们可以点击这里的添加组件按钮,里面分类列出了所有支持的组件。比如我们可以添加一个叫做 rigid body 钢铁的组件,让游戏对象参与物理引 群的计算,这样物体会受到重力下降,碰撞到其他物体反弹的呢?在菜单中,我们还可以找到各种其他的主角,我们可以用 animator 来控制管理角色的动画 order source, 给游戏对象添加声音, 使用 canvas 来绘制二维用户界面,使用 particle system 来产生粒子效果等等等等。 说完了三维物体的创建,我们来讲一下场景中的另一个基本要素,摄像机。摄像机展示了游戏中玩家的视角,一个场景中如果没有摄像机,自然不会显示任何内容。 我们除了可以用之前的方法修改摄像机的位置旋转角之外,还可以修改摄像机清除背景实用的颜色,摄像机的投影类型,视角大小等等。同时我们也可以通过给摄像机添加 post process layer 组件,配合场景中的 post process volumes 来给镜头添加后期处理的特效。比如这里我们要打环境广州照,近身还有光源的效果。 讲到这里,我们的场景都还是完全静态的,如果我们想给游戏加入动态的逻辑,比如响应玩家的按键操作。实验游戏的基本玩法。编程自然是必不可少的步骤。 在 unit 中,我们可以通过 c c f 脚本或者也叫 monoscript 来进行编程。我们可以选中一个游戏对象,点击添加组件, 然后输入名字来快速创建一个脚本。当然,我们也可以在工程窗口中点右键创建一 csr 脚本,然后再将脚本拖拽到游戏对象上。创建脚本的名字可以在 a, d, e 中打开并编辑它。可以看到脚本都继承于 model。 behavior 里面定义了两个非常重要的函数, update 函数,每一针都 会被调去,我们可以在这里实现基本的游戏逻辑。 start 函数只会在最开始的时候给调用一次,通常被用作初始化操作。这里我们可以在 start 中调用 debug 点 log 输出一段调试信息。 debug 类定义了与调试相关的各种工具函数。 运行游戏,我们可以看到下方控制台输出的文本就印证了我们的代码被成功执行。我们现在实现一个基本的怪物移动逻辑, 这里我们都要用 input 点 get key 去判断在这一阵中键盘上的 w 键是否被按下。如果是我们给怪物施加一个向前的作用力,这里我们会用到之前提到的 rigid body 触键。 我们可以在 start 函数中获取这个组件并存放在 r b 变量中。然后我们再用它的 at force 函数来添加一个作用力,这个作用力的方向是物 体面朝的方向,乘以这里定的一个参数加速度之后,我们可以在测试中微调这个参数。 同样的,当一键被按下时,我们的 transform 的 rotate 函数让物体沿着 y 轴逆时针旋转, 旋转的角度等于这里定义的旋转速度乘上时间。关于时间的计算,我们都要用 time 点掉的 time 破取上一针与这一针的时间差。注意,这里的时间差并不是一个长量。由于各种因素的影响,我们的游戏并不总是运行在同一帧率上。 最后,我们要同样的方法是先向右旋转的逻辑运行程序可以看到这样的效果。 另外,我们可以将之前定义的这两个参数设置成 public, 这样我们可以在编辑器中实时修改他们对跳餐非常方便。当我们完成了游戏的开发,打算将游戏 打包并分享给其他的人,我们可以点文件构建设置快捷键是 control shift 加 b。 在窗口上方,我们可以指定游戏中需要打包的所有场景。位于列表最上面的是进入游戏后加载的第一个场景。 在下方我们可以切换目标平台。你可以选择 pc max 上运行的独立版本,移动端的 ios 版本或者 ps xbox 之类的主机游戏版的前提需要安装必要的平台开发包。最后点击下方的构建按钮即可。

阿瑞阿瑞,快来教我做特效。哈喽,大家好,我是阿瑞,今天咱们要讲一个呃破碎 的一个用法,这也是在评论区抽到的一个粉丝,他问的一个呃,他的那个使用方式,然后我这边简单的模拟了一下啊,就是我们常用的,呃,有这个。第一个, 这个是自由落体吗?就是我们一个物体,比如说冰呐,石头啊,那种岩石,嗯,大家的做完效果之后,他自己碎裂,然后缓慢的向地面落下的这种效果。第二个是被击飞的一个效果啊,就被一个强大的一个外力,像被一个卡车撞飞的一个东西。 那第三个呢?是一个就是地面吗?地面破碎,比如说我们做一个呃咚,一个重击,然后还还有一个从地面喷出一个激光,嘭,就这种两段的一个效果怎么做?我们来看一下啊。 行,那我们就先开始了,首先 max 都有吧,我们要打开 max 啊,我先把这个删掉啊,我们从头再来啊,然后像这个,呃破碎插件的话,我也晚一点,我也会直接发在群里,然后里面呢,呃,也都是已经 给大家放好了这个安装的一个步骤,哎,这里已经有了,就是怎么去装啊,怎么去破解啊?都有啊,大家只只需要跟着这个去装就行了。然后是为了照顾一些新手朋友嘛,也是特意弄了一个中文版啊, 破碎这种东西我的粉丝不允许,他不会啊,稍等一下啊,先稳定一下, 首先我们一个一个来啊,先做第一个,我们,嗯要做那种石头啊,冰锥,那我们先建个冰。首先还是以前教你们的方法,一面体脱一个尺寸可以不用管,大家才脱出来,默认是四面,四面体,我们给他调成十二面体。 二十面体是什么呢?你去脱这个值,他就能变多变少啊,就这个值,大家可以偷偷看啊,可以偷偷试一下啊,保持默认就行了,然后四乘四, 然后控制点好。要变形嘛,你肯定要去拖动一下他的点嘛,你看他现在像个冰吗?他现在像。像个冰坨子吧,像个砧子。 那我们冰的造型是什么?肯定是上窄下宽一个尖尖的,那就把他拖长压窄压尖嘛,对吧? ok, 然后再把它拖上去一点点旋转,因为它太单调了,你看这个菱形,你一转它的这个菱形感就强烈了啊。然后下一步是什么?把这个下面给它拖成平线, 哎,这样我们才能放在地面上,就是在做效果的时候,嗯,穿帮的会稍微少一点,但是如果你不在乎或者你的兵本身就不显示完全的话,就不需要这么做了啊,或者是个人喜好。 ok, 做好这一步之后就差不多了,然后咱们就要打开我们的后退插件了,打开, 然后这个地方有六个选项啊,不知道选哪个,那就看哪个名字跟你要用的功能最像啊,那肯定是这个呀,然后打开浮动面板, 嗯,然后打开了这个面板之后大家又蒙了,他是个啥呀?看不懂怎么睡呀?那么一个一个讲啊。 嗯,首先碰撞物体和动态体啊,他是直接受我们的这个物理学的一个影响啊。啊,那我们边做边讲吧,比较好理解。首先你要破碎 他就必须在这个动态碰撞物体里面要添加上他的这个破碎功能是不生效的啊,你看我随便怎么点没有效果。 那我们给他添加到动态碰撞物体,然后再用破碎,然后这个冰的话,咱们要用的是一个规则,匀称型或者是不匀称型都行,看你自己,我们现在就用一个匀称型吧。好, 然后咱们在这个地方选物体的时候,给他选择这个凹面或者是凸面或者凹面千万不要选正方形和球形,我们可以选个凹面,然后给他选择一个冰,因为这样的话他会大概的去模拟一下他的这个冰的这种感受啊,就是最后破出来的时候, 然后我们来匀称数量和递减值啊,这个就就是他的基础数量和他的那个不断生成的数量一个减法的一个值啊。 我们基础像这种大冰块、大冰面你也不需要太多,五个就行了,然后这个地方控制到十二个以内,不要太多,太多的话他会特别细碎,然后你的性能也吃不消。如果你做写实的话,那你就控制到二十以内就好了。前面这个只控制到八以内,做写实的可能就控制到十二以内 啊,就用刚刚的最大值去控就行了,整圈的就五,然后十二十二都有点多了,就把少一点点,然后碎开。好,现在这个他就是已经已经碎掉的一个一个效果啊,他是自动铺面的啊,这个好, 然后我们现在他在动态物体啊,我们的第一种他就是用他自己的一个呃动态去模拟出来的一个效果,所以说我们直接打开物理学就好了,然后先把这个关掉,因为你们是没有开的这个啊,我先把它恢复成默认啊, 我们一步一步去跟你们讲吧。啊,你这一步数,这个应该是五,然后这个应该重力应该是零啊,这个是一好,现在就是默认值,我们先模拟一下啊,我把它调成全屏 点击一下,你看他没有任何的反应,对吧?再来。好,他还是没有任何的反应,他现在在动态题里面物理学,因为他现在默认他啥也没有啊,那么现在就要开始加了,比如说我们的帧数肯定从第零帧开始,对吧? 然后结束之后我们先把时间范围控到两百,再大一点,碰撞融错,这个可以先不管,先给点重力,然后再来看一下这个效果啊,哎,你看他直直的就掉下去了,没有碰撞体了,对吧?这个时候大家肯定要说 见个面片啊,不用,下面这有这个高级模拟属性啊,用这个麦克斯网格作为无限地面打开,然后再运行, 哎,你看他现在飞了,而且速度特别快,那就是因为我们上面的值啊。嗯,首先是碰撞融错,这个是他飞的一个主要的一个原因啊, 融错率太低了,这个就相当于是他的每一块的那个碰在一起的面积,你可以理解为就是两个碎片碰在一起的面积,现在是零点一厘米,那就是不允许他们碰到一起,那我们就限制一下十厘米啊, 哎,你看他就是往往下掉落了,然后这个止步术呢,咱们也要设置成一,他才不会飞的特别远,哎,才会直接掉落。止步术是什么?止步术?我们调大一点看一下啊, 他是一个向外飞的,比如说你想象一下你在做一个陨石在外太空他撞击到另一个陨石他有碎片要往外飞然后再加重力再往下掉差不多就这么一个意思吧就是一个向外扩散的一个。呃 怎么形容呢?有一点像种地缺碱这个概念,一般情况下一就行了。好,然后种地的话一个一个试嘛咱们要多去尝试啊。啊你看这个二好像也差不太多了那我们试下三。 哎效果差不多啊那我们可以去改这个容错嘛比如说设置小一点让他散的更大一点啊,你看他就是嘣的一下散开了,但是咱们可能想做的是一个他不会破坏他的造型的一个散散开啊。那就控制到八然后现在他散的特别快对吧。 哎我们去调时间嘛时间缩放调到零点五好然后再加重力因为他缩放是把这些所有子全部缩放了。 ok 我 们现在先就用这个效果啊,因为这个大效果的话可能你要重新破就这个效果不好看你要重新破一下哎。接个电话 喂你好哦你帮我放门口就好了。哎好谢谢。 好的咱们继续啊 你看咱再破一下啊。好,这个形就差不多了啊如果还要更随机的形的话。呃大家可以再建一个这个冰锥或者是在建立的时候多复制几个放在那备用,因为他破了之后就没办法还原了。这个 啊好,然后形状已经定好了之后咱们就点第二个啊这个就相当于是把它烘成一个动画帧了就是真正你要导出的一个资源了。 ok 其实他针数没有这么多,那我们也先不用管,我们还是先按照这个方式去做,先导的优劣体,带大家导导一遍啊,后面的就不教大家怎么导了。好,首先他烘成了针了,哎,你看我们拖一下,拖到差不多八十针,那我们就选选 导出,然后破碎加个零四吧,这个地方八十啊,就是才开始动画是灰的,打个勾,然后烘培,动画这个地方也打个勾,然后设置成它,最后就是定住的针就行了,八十针 ok, 然后直接将它拽入你的 unit 啊,如果你没有 unit 的 话,那你呃就在 max 看看效果就得了啊,然后把它拖到你的场景里面来, 好,找到一个合适的大小,然后把它架到泰曼莱, 直接拽过来啊,动画我们就用泰曼莱预览吧,如果在特效里面做的话,用泰曼莱也行的啊。把动画扔上来, 然后现在,哎呀,得先解一下锁,重新建一个,他们来啊,打上锁,然后拖过来,再把他的动画拖过来,哎,拖动一下是不是就好了? 好,然后消失的话,其实也很简简单的啊,就是咱们去做了一个动画,比如说我再给他加一个动画这张针,然后给他的那个高度给个五,给个零,先打上一个关键针,然后我可能希望他慢慢的变到地面去。 好,我把针给关了,大家看看啊, 你看这个消失就已经做完了,然后导出方法呢,也给大家讲了,我们接下来做的另外两个就不带着大家一个一个导了啊,咱就节约一点时间好,然后还是用这个兵,我们就不重建了,当然大家想更多的随机子就重建一下,我只是跟大家讲一下那个碰撞怎么去做啊? 然后我们现在去建一个长方体,锥形或者是什么什么的都可以,他的碰撞效果碰出来是不一样的,大家多去尝试一下。我们先用长方体吧,再给大家做一个推出来的效果,你看我们现在该怎么去做?他自己受力的控制, 然后我要重新去碰它,这不是就有点不太对这个逻辑,那我们要把它从动态碰撞物体消除,把它转成休眠物体,哎,那我们先播放一下啊,你看它就不受我们物理学的一个影响了,然后它也没有任何的动画帧,相当于我之前的动画帧,它也会全都没有, 然后他呢?他肯定不能放在动态碰撞了,放进来之后他不就受那个物理学的影响了,往下掉落了,对吧?那他肯定是放在静态运动学对象, 然后我们该怎么去让他撞呢?他也没动画呢?那就在 max k 一个呀,首先找到我们右下角的这个打关键针的呀,先点开自动关键针,然后把针拖到第一个,选中这个物体,点这个加号打一针。 好,然后我们再来给他做一个零点三秒吧,二十针,做一个快速的位移,砰,自动关上,然后直接开始运转, 哎,你看他就被推走了,好,然后这个时候我们来调这个物理学,我们这一堆啊,他就生效了,比如说我,我希望他的那个容错率小一点,调成零点一,我希望他炸开 崩,对吧?就上的更开一点,我们就把容错率调小,如果我希望它紧密一点,然后就调大, 哎,这种就有一个被推的一个感觉了,就有一个重力感了,然后这个重力也可以加大, 对吧?这种的话就是那种,嗯,体现出你这个被破碎的东西啊,它很厚重的一个感觉啊。这个咱也不细讲啊,大家就自己调啊,多试一下步数啊,这些你也可以开一开。 哎,原理都讲了,反正大家应该都懂了啊,动力调低,你看他又是个啥效果,飞嘛,疯狂的飞啊。哎,好抽象,那一个一直转的好,调好之后呢,还是一样的掰个一下,哎,渲染一下这个针,啥也别点,等它旋完你具体取了多少针,你拖这个轴就行了。 好,一百五左右,然后把这个框啊这个小方框给删了,框中缩小框中里所有碎片,然后点那个导出重复刚刚的那个步骤,然后把帧数调到一百五就行了。对, ok, 这个是第二种。 那么来讲第三种啊,那个就是我们技能特效里面使用较多的了,也比较核心的一个使用方法了啊。我先刷新一下这个界面,哎,我刚刚是因为拖的有点乱了,所以我才刷新。我现在是建一个圆柱体嘛,肯定 哎,然后不要太厚啊,薄一点点,稍微圆滑一点,哎,有三十六就行,也别太那个啥,一要稍微有点面熟嘛,然后还是一样的,我们要破它嘛,那肯定要动态噻。好, 然后这个时候呢我们得选了啊,再用这个均匀体就不太合适了。那这个时候要咋办呢?我们可以选择一个呃中心点,然后数量呢?我们调到一个, 想一下四块吧,然后针剪子调到二呃,乱的,这个子呢小一点,不要那么凌乱,断面细节也不需要太多,灵活一点,倒拨强度嘛,就零点三小一点好,然后碎开。 哎,因为我们想做的那个地面啊,他也不可能是那种全纯大块的,那怎么办?那继续破就行了,对吧?然后这个时候呢,我们把它换成 均匀起,然后给它碎成少一点啊,四个针剪子把它调到二,哎,就这样去破它,就把它破的好看一点,就重复刚刚的这项操作就好了,一个一个去重复去点一下啊, 不要不要急于求成啊,这些东西虽然说看起来有一点点麻烦,但是你要为了效果你就不要去着急,你要一次性到位的话,那行,你要是,嗯尝试出了那个值, 那你也可以直接到位,但是要花大量精力,那我还不如就是在尝试这个的这个东西的时候呢,我就早点去把它给做好。好,现在这个东西就破好了,全部清掉,全部框选还是怎么着?添加到这个休眠物体,因为我要用东西去碰他嘛, 然后刚刚的那个操作是先把他给顶起来,对吧?顶起来之后最后第二段再来一个强力的一个输出,我们建一个球体跟他一样大,哎,然后目标也勾一下零好 缩放一下,做成这种凹凸的就行了,一会要用它这样去给它顶上来,就是把中间给顶起来,然后边缘不要受太大影响,好,先把它拖到地下。一样的啊,给个动画打一针,自动关掉针,好给到十五吧, 然后往上拖拖拖,拖到哪?随便你啊,根据你的效果来定好,然后把这个球呢撂到静态运动物体,然后运行, 哎,他现在是不是有点过猛了?那物理学去调,我们把容错调到零点一,然后步数调到一,然后重力呢?给大一点,给个五,因为他不能飞, 哎,对吧?我们只需要把它给顶开一个地面,就是之前有个同学问我那个崩山机怎么做的,就这么做的。那你看他顶完之后他不动了,对吧?你还想他持续的动,那加针嘛?比如说到四十针,他还在不断的会移,向上,会移到这里,好, 来渲染一下啊。对啊好,那你现在看他卫衣他把整个都顶起来了,那就是你这个东西大了嘛,他再缩小一点嘛,然后再来,哎,你看是不是他就后面就有个缓冲给他顶上来, 哎,好,然后第二段那个炸掉。怎么做呢?再拖一个圆形还是归零啊?这个插件他可以无限的叠加的。 好,给他放到下面,然后我们看一下他的针啊,我们刚顶到四十了,那我们中间肯定还要嘣三,嘣嘣嘣嘣嘣嘣嘣,好,扎到这里来,从这里我们再给他打上关键针,选中另一个球了啊,打一针自动关键针,然后他得快给个十针,直接嘣冲出去,然后关闭, 然后切换到物体,把它也添加到这个静态运动体里面。好,然后播放嘣,是吧?就冲给它冲散了吗?太快了就加针嘛,再来 顶开嘣嘣嘣,哎,好,那这个效果也好了,那我们就还是一样的把真拳给它渲染上。 好,渲染好了之后,这两个没用的东西啊,就可以删了,这个空中这个 bug 也删掉, ok, 来拖动这个滑块啊,可以看到,哎,现在这个就很好看的,一个破碎就有了啊, 哎,是吧? ok, 那 同学们自己就去多运用一下这个破碎插件啊,把这些参数都调一调,不要说我跟他做了我就会用,跟会是两码事啊,会是你对它的功能,对它的这些, 呃,他的属性你都了解,你知道该怎么去使用他,我要一个什么效果,我该怎么去用这些东西你都明白了他的原理,这个时候你才能教会啊,多尝试,反正玩这个啊。 嗯,然后还想学什么东西,欢迎大家评论区留言啊,说出你想学的一些特效小技巧,然后让我来带你一步一步的去实现。 ok, 那 咱们今天的课程就到这里,大家点赞关注加粉丝群啊,想跟我一起学有特效的粉丝朋友们就加粉丝群私信我, ok, respect! 拜拜!

哈喽,各位同学大家好,咱们这节课来讲解一下在 c shop 当中啊,我们如何去做变量键盘的输入啊,以及呢,我们也会讲一些关于输出函数的问题哈, 好,这个话题呢还是比较简单的,首先是啊,变量的输入啊,在这里呢,咱们以前啊使用的是 ctrl 点 right 来向咱们的屏幕上输出一行, 那同样呢,既然说 ctrl 里面啊包含了一个 red 的工具,那也可以包含一个 red 的工具,它呢可以从咱们的这个黑黑命令框上啊去读入你所输进去的内容哈, 所以说呢,可以调用 ctrl 点 re 的这样一个工具或者说工具方法,那它得到的是什么呢?它得到的是一个字符,它的右内扣的值,而 ctrl 点 read line, 它是读入了一行的字符串。来,咱们去到 vs 里面先实验一下这两个函数的含义啊,好, 那在这里的话呢,我们呢先做一个 int 型的变量啊,叫做 n, 这个 n 呢等于 ctrl 点,现在打一个点,然后 read 来,咱们先用这样一个啊 read 方法,看看到底会发生什么,然后呢咱们再将这个 n 啊给它打印出来。好, 那我们可以看出来啊,在这里呢 read 是返回的一个什么呀,一个 int 型的变量啊,值,那给到了这个变量 n 啊,好,我们直接运行 在这里呢,光标会不停的闪烁,他在等待你输入一个东西。好,此时呢,我们输入一个字符 a, 然后点击回车。好了,你看 这样的话呢,咱们的 ctrl 点 read 这样一个方法,他就读取了你现在啊输入到屏幕上的 a, 并且呢他是将这个 a 后面的编码。哎,我们都知道每一个字符他后面都有一个数字编码,那编码呢?给到了 n, 那给到了 n 之后呢,我们把这个 n 打印出来,那当然就是九十七了。好,那这样的话呢,就是,哎, read 这样一个功能,那这个功能呢,我们可不可以直接哎,让他去输入一个字符,然后我们读到一个字符,而不是一个读到一个 n 啊? 你看,我明明呢是想要输一个字符,结果你给我读到的是他背后的编码,这样的话呢,其他其实不太好玩啊,咱们可以这样做,可以呢,叉类型的 c, 那等于 ctrl 点 read, 那这种情况下呢, 肯定是不行的,对不对?因为这个功能它返回的是一个 inter 型的数字哈,那我们呢,需要将它用 convert, 哎,大家还记得吗? convert 这样一个 class, 或者这样一个类啊,它有一个函数叫做 two 叉啊,兔叉,好,咱们呢将咱们读取出来的这样一个数字啊,把它转化成为一个字符,随后把这个字符给打印出来,哎,这样不就可以了吗? 那 convert 这个类里面的凸叉呢,是将传进来的这样一个编码,可以转化成为它这个编码所对应的字符啊,字符 c。 好,咱们把它再实验一下, 在这里呢,我输入一个 a, 然后再点击回车,你看此时的话呢,他呢就变成了一个字符了啊,而不是一个数字。好, 接下来呢,咱们的代码啊,没有发生任何的变动,但是在输入上呢,咱们输入两个或者三个字符,咱们看一看会发生什么哈,你看,比如在这里啊,我输入的是 a, b, c, 哎,我直接输入三个字符,然后点击下回车 啊,底下回车,你看它,其实呢只能读到我们输入的第一个字符啊,因为这个就是啊 red 啊这样一个函数啊,他或者说方法,他只能够读入一个字符,好,那如果说我想把第二个字符也读进来怎么办呀?很简单啊,我们把这行复制一下,然后前面这个变量呢是 c 零,然后第二个呢是 c 一, 然后呢咱们让他读两次,你看不就可以了吗?打印的话呢,我们先把 c 零打印出来,然后啊我们再去复制一行,把 c 一打印出来,你看此时他就能够读入两个字符,对吧?好,第 第一个字符是 a, 第二个字符是 b, 第三个是 c, 然后我们点击回车,你看点击回车之后呢,他先走到第一行代码,然后呢将咱们的 a 给读进来,然后复制到了 c 零啊,并且转化成了咱们的叉类型, 随后呢他进行了第二行代码,将 b 哎这样一个字符读入,读入之后呢转化成为一个叉类型,然后给到了 c 一, 随后呢咱们输出 c 零,当然就是 a 啦,输出 c 一当然就是 b 了啊,好,所以这样的话呢,我们会发现啊。哦,好吧,看来 ctrl re 的这样一个方法呢,它是只能够读入一个字符,并且它给出来的是它的背后的编码值。 好,接下来的话,我们试一试另外一种方法啊,前面咱们打个注视,然后咱们下一个啊,方法呢是 ctrl 点 re 的 按啊,它返回的肯定是一个字符串类型了啊,比如说 string, 然后呢我们等于 ctrl 点 red line, 最后呢我们直接把这个 string 啊给它输出出来看一看啊,好 运行在这里呢,我输入 a, b, c, d, e 啊,我可以输入任意长度的字符串,随后点击回车,你看 此时的话呢,通过 ctrl 点 read line 这样一个方法,然后我们就可以得到了一扛啊,当前这一行的字符串, 那这一行的字符串被一起读之后呢,会拼接起来,给到一个真正的字符串的变量叫 str, 随后呢我把这个 str string 给它输出出来哈, ok, 所以我们现在能够明白了, redline 就是读取一行的字符串,然后呢,以咱们的这个回车作为结尾啊,然后咱们的 red 是 red 啊, ctrl 点 red 函数是读入一个字符,它是一个字符一个字符的读入啊,并且返回的是编码。 来,咱们回到 ppt 里总结一下,如果说你呢想从屏幕上获取到一个一个字符这种的输入方法,那就 ctrl read, 并且呢外面要套一个 convert to char 这样一个方法,那我们知道 to 叉这样一个方法,它的括号里面就是你要把谁给变成一个字符,那我们呢就是把 ctrl 点 read, 然后这样一个方法所给我们读入进来的啊,编码把它转化成为一个字符。好,那这就是读入单个字符的方法, 接下来呢,读入一个 string 啊,就是读入一行的字符串,这个非常简单,那就是 ctrl 点 readline 就可以了,那接下来的话是输入一个整数,那我们使用的是 ctrl 啊,我们使用的是 ctrl 点 re 的烂这种方式啊,读入一行,然后呢将它转化成为 int 三十二的数字哈,来我们看一看怎么做到的 啊?在这里呢,我们先把它注视掉啊,那接下来我们所得到的题目是说啊,我想呢输入一个整数,然后呢把这个整数给我拿出来,怎么办呢? 我们现在肯定要声明一个整数 n, 是吧?然后让他等于等于一个什么呢?我们知道整数在屏幕上呢,可能是多位的,比如说三位整数啊,四位整数啊,什么一百二十五啊,一千二百五十六啊等等。好,那注定他就不能设单个的字符了,对不对?所以我们一定要用 ctrl 点 read line, 然后来做这样的事了,对吧?他肯定是一个字符串啊, 然后呢,我拿到是一个字符串,也不可能直接给到一个整数啊,将一个哎,数字里面是包含着一二三四五这种数字的字符串给转化成为咱们一个数字的话, 应该用什么样的方法呢?是不是 convert 啊? convert 点二 to inter 三十二就可以了,是吧?咱们以前都学过这样的东西啊。好,最后呢,咱们将这样一个 嗯给打印出来,来,我们运行一下,看看是怎么使用的啊?在这里呢,仍然是等待你的输入,咱们要输入一个什么呢?包,呃,代表着当前数字的字符串,对吧?比如说一百五十六啊,一百五十六,好, 然后我点击回车,点击回车之后,是不是他首先会被 ctrl 点瑞德兰给读取啊?这一整行一百五十六作为一个字符串读取出来,随后呢将字符串转换成为了整数,好,点击回车。 哎,你看一百五十六咱们就输出出来了啊,说明这个 n 已经读到了一百五十六这样一个变量值。好了,那关于整数的读入咱们也给大家说完了,接下来给大家 介绍一种输出的方式啊,咱们以前啊,都是用 ctrl 点 right line 直接写一个字符串在后面就可以了,对吧?那现在呢,咱们哎给大家介绍一种新的方式,叫做站位服输出。好,我们先回到 vs 当中啊,先不去看 ppt, 在 vs 里面呢,先给大家展示一下啊, 比如说啊,我现在有两个变量吧, int a 等于十,然后呢,我们还有一个变量是 float 类型的啊, f b 等于,呃,一点五吧,然后 f 好了, 随后呢,咱们想要去啊,编一个字符串,把它们输出出来,就是 ctrl 点 right, 然后 ready 呢,咱们一定以字符串开头,对吧?这我想输出一个整数, 然后这个整数的话是谁呢?我们就加上后面一个 a, 这样的话呢,由于前面是一个子福串,你一个加号,后面加上的这个 a, 这个 a 会不会被转化成子福串呀?哎, 他被转化成字符串之后呢,会拼接到前面这个字符串的后面啊,随后再加上,哎,是不是后面还可以再继续拼接字符串啊,和一个符点数,那这个符点数后面就跟上谁呢?加上一个 fb。 好,那 f b 呢,是一个 float 类型的数字,加在了一个字符串后面,是不是它也会被转化成为字符串啊,然后拼接到前面这一整个字符串的啊?后面哈, 好了,咱们直接打印输出一下。好,你看,我想输出一个整数十和一个浮点数一点五哈, 这样输出字符串的方式还是比较粗暴的,他们啊,每个变量和字符串之间都需要用加法进行连接,那中间一旦写错了呢,那就非常的难受哈,好,在这里呢,给大家介绍一种新的方式呢,我们称为叫做站位符 place holder。 这种方式, 比如说呢,咱们想输出这样一句话,我们啊,首先有一个变量 a 等于的是五,然后有一个变量 b 呢,等于的是六,哎,两个整数,咱们想输出的是呀,呃,五 and 然后六啊,这样一个字符串的话,请问我们应该怎么输出呢? 那你肯定想到的啊,那就是先用着一个字符串,空的字符串,然后一个加号,加上后面一个 a, 再加上一个字符串,里面写一个按的,然后再加 加上最后咱们这个 b 的变量,哎,这样不就可以了吗?啊, ok, 那这样也是没有问题的哈,但是咱们在这里呢介绍的是叫做哎字符串的模板方法,那就是站位符,好,我们看在这里啊, ctrl 点 retlin。 首先呢,你要给到一个字符串, 这个字符串的作用是作为一个模板先放在前面啊,等待输出。在这个模板里面啊,咱们留了两个位置,一个是零号位,一个是一号位,在这里的话呢,我们用大括号加中间的数字,就表示了一个空位, 那这个地方就好像是填空题一样,等待你往里填空,这个东西就叫做站位符 place holder。 那到底是用谁来填空呢?哎,肯定是要用后面的参数来进行填空的吧,那如何一一对应呢?好,那在后面呀,他的参数 是有他的编号的,比如说 a 这个位置是零号, b 这个位置是一号,所以说呢,在参数这边啊,是按照零一二三一知道 a 来进行编号的是按照顺序,那他的这些编号呢,就对应了咱们站位符里面的这个零和一。 好,那进行输出的时候呢,这个零号就会被 a 所替代,而这个一号就会被 b 所替代,所以这个就叫临时的站位啊,那最终都会被替代掉的,从而能够输出五 and 六。好,来,咱们实验一下。 好嘞,在这里的话,咱们就不使用这种方法进行输出了啊,咱们来将字母上的模板先编写出来啊,我呢想输出一个整数,这个整数后边是不是,哎,希望能够输出一个数 字啊,咱们给他零号和一个符点数,哎,符点数这边是不是也需要输出一个数字呀?好了,那我们的关于啊字符串的模板咱们就写完了,接下来呢就是要填空了,请问零号空上填谁啊?零号空上填 a, 那一号控场填谁啊?一号控场填 f b, 对吧? ok, 那这样的话,咱们这一行输出哎就完成了,来点击运行,你就会发现,哎,没有问题哈, 好了,那在这里的话,如果把零跟一去颠倒一下可以吗?你看如果把这个地方写一号,这个地方写零号的话,是不是 a 和 b 啊,就反过来了呀, 你看,变成我要一个输出一个整数一点五了,对不对?哎,就反了哈,好,所以说呀,我们在这个地方啊填的空,完全就取决于这两边 的编号以及他后面哎,咱们这个代码上变量的顺序。 好,那在这节课里面呢,咱们就讲了两个问题啊,一个是关于使用 ctrl 这个 class 进行输入怎么做,那另外一个问题呢?就是咱们站位服啊,如何使用?

当我们的鼠标移入这张图片的时候,它会变成这个对号,当我们鼠标移出的时候,它会变成这个小飞机。移出,移出,移出。首先我们准备一张鼠标的图片,把它放到我们的工程里面, 然后我们需要把这个鼠标的类型,这张图片的类型改成 cut 啊,不能是精灵图案或者其他类型,一定要是 cut。 改成鼠标类型之后,我们点击应用,那我们这次又是我们的鼠标的图片,那怎么设置?我们点击左上角 file, 找到 build setting, 然后点击 player setting 啊,我们在 player 这个叶片 project setting 的 player 这个叶片中可以设置我们的默认鼠标啊。我们把这个刚才的这张图片给到我们的鼠标,给到我们的这个属性栏,然后就关闭。 那这样子我们在运行程序的时候,我们的鼠标就会默认变成我们的这个小飞机。好,当然我们也可以通过代码去设置。首先我们把这张 cut 图片先删除掉,先移除,在 project 图里面创建一个代码叫 set cut。 设置鼠标,把我们这个代码放到场景的任意位置。首先我们需要知道我们的 cut 是有两个主要属性的,第一个是 visible, 代表我们的鼠标是否显示或者隐藏,如果点击出,那我们的鼠标就会显示。那如果点击 false, 那 我们的鼠标就会隐藏。隐藏的厚厚的鼠标是看不见的,我们需要按 esc 才能再次出现。还有一个是 ctrl lock state 锁定状态,它有个 locked, locked 代表是会把我们的鼠标集中在我们的屏幕正中心,在我们聚焦在游戏窗口的时候,我们的鼠标会聚焦在屏幕正中心,并且我们的鼠标会默认隐藏,不管你有没有写鼠标的显示隐藏,它都会默认隐藏好。还有一个是 ctrl delock state 的 can find, 这个代表我们的鼠标局限在我们的游戏窗口这个区域内,它会把我们的鼠标限制在我们的游戏窗口,不管我们往左右怎么移,我们的鼠标永远不会超出这个键的窗口,就是我们的视图窗口,它不会超出去。好,接下来我们来设置鼠标, 有一个 set cursor 设置鼠标,如果我们写的是 non 默认的,也就是用没有图片,就是用系统自带的鼠标,那如果我们设置了图片,假设我们开放一个公开的属性,然后把我们的这个图片设置到 cursor 点, set cursor 设置过来,然后第二个参数代表我们的 hotspot, 就是 我们的鼠标热点, 那我们默认的是零零点,就是我们的 top left, 也就是我们这张图片,也就是我们这张图片的左上角。左上角代表它这个点会跟随我们的鼠标零零点这个位置, 那如果是这个像素,比如说这个图片的尺寸是一零二四乘一零二四的,那我们右下角我们设置。如果是一零二四乘一零二四,它就是右下角跟随我们的鼠标中图片,也或者你也可以设置中心,那如果我们设置零零点,那我们就 left 点 zero。 好, 后面我们直接用 open, 那 我们回到我们的工程,然后找到我们刚才的这个代码,把我们的这个格式,这张鼠标的图片拖拽给这个属性,那我们来运行。好,这样子,我们的图片我们在运行的时候,我们的这个鼠标就会变成我们刚才的是要设置的这张图片, 然后我们的点击也是相对正常,我们左上角的这个零点去点击的时候也是 ok 的。 那如果说我们刚才的这个地方不是用 vector 点 zero, 我 们做一个偏移 event, 比如说是五百,五百它就相当于是一个鼠标居中的一个位置,那你觉得这张图片大概五百五百的像素可能是大概这个点,那这个时候我们运行的时候,我们的鼠标看着好像还是一样,但是我们在点击的时候,我们还跟刚才一样,左上角这个地方是点不到了,只有我们鼠标再往里面挪好,挪到大概刚才中心点的这个位置, 它才是代表我们的真正的点击热点。我们可以去改修改我们的鼠标,比如说鼠标滑入这张图片,我们去修改一个状态,鼠标滑出修改另外一个状态,删除原本的这个场景中添加的这个代码,然后我们在这边创建一个代码叫做 image power, 然后把我们的代码代码拖拽给我们场景中的一张图片,比如说像这个拖拽给我们这张图片, 我们继承自己一个接口, high point enter handler, high point exit handler, 然后我们实现它的两个方法,实现它的两个接口, 我们把这两个先删掉,这个代表我们的鼠标移入会触发这个方法,鼠标移出会触发它这个方法,那我们在这边上面两个公开的 鼠标 cursor enter 和一个 cursor exit, 当我们鼠标进入的时候,把我们的 cursor 鼠标 设置我们的鼠标为我们的进入的这张图片, 然后它的热点就是我们的 vector zero, 就是 左上角的零零点, 当我们鼠标移出的时候啊,我们就让它当啊,或者说设置我们的 cursor exit 都可以,我们再回到工程里面, 好,这里我们来设置一下,那当我们移出不设置的时候,那就是相当于就是空,那我们移入的时候,用这张正确的图片啊,这张正确的图片也设置设置成了 cursor, 然后我们的移出这张,如果不设置,那我们也设置为空,就是我们默认的鼠标,那我们需要设置的话就设置成这张, 设置成你需要的图片。好,我们再来运行,当我们的鼠标移入这张图片的时候,它会变成这个对号,当我们鼠标移出的时候,它会变成这个小飞机,一路移出一路移出,但就可以实现我们在不同的窗口设置不同的鼠标状态。

今天我们来说一下 pico 四手柄的按键以及 unity 内对应的常用功能。我们有左手柄和右手柄两个手柄,那两个手柄上的按键比较类似,像左右手柄上面都有这个抓握键,有我们的关机键,左手柄上面这个有 x 键和 y 键,还有右手柄上面的 a 按键 b 按键,我们左手柄的摇杆有上下左右、 上下左右,还有我们的右手柄的摇杆上下左右,然后这两个是系统的按键,我们一般不使用。然后像左手柄上面其实这里还有一个菜单键,右手柄这里还有一个拍照键,那这个是 pico 下面自带的,那我们正常 的手柄上面像这个按键,菜单键和这个菜单键,以及我们的拍照键,不会不会去给他做任何的绑定使用。然后我们的摇杆有前后左右、上下左右、上下左右四个按键,同时两个摇杆其实还有个按键是可以按下去的,还可以轻微看到我们的摇杆是可以按下去的 啊,这就有了几个按键,我们的抓握键,还有我们的扳机键,我们的 x 键, y 键, a 键, b 键,还有我们的上 下左右四个摇杆,还有我们的摇杆按下去,以及我们的手柄左边这边还有一个菜单键可以使用。好,我们的默认 vr 配置里面我们的左右两个手柄的操作按键对应的功能会有一些区别,像我们左手柄上面我们的摇杆, 我们摇杆的前后左右对应的,我们的人物的移动,往前就是往前移动,往后就是往后移动,往左往右,还有我们左手柄上面的这个抓握键,还有这个扳机键, 作品上面的遥感前后左右,呃,往前会出现一条射线啊,那如果对准地面,如果我们的这条射线对准地面,就会出现一条传送线啊,那如果没有传送线,就是如果没有可以传送的地方,他会红色,可以传送的地方,他会出现一条蓝色的这条线,那我们人物就可以往前传送,按住松手 它就可以传送,那比如说对准这个点,它会自动传送到这个点。还有我们右手柄上面的左右往前是刚才发发射了一条我们的射线,那如果是左右摇杆,左右摇杆的话,对应的是我们人物的左转九十度, 这里是四十五度往右,四十五度往右,四十五度往右旋转,那如果是往后直接就往后转,比如说我们现在对准的是这个前面,我们直接往后,他就转到后面,再往后就又转到了前面,那我们的右手柄摇杆上面,我们的右手柄上面是有一个抓握键,还有一个扳机键,两个按键对应的功能会有一些区别,就看你怎么设置。那如果我们使用抓握键 啊,我们使用抓握键去抓物体的时候,可以抓住它去做一些,比如说像这个物体抓住它,你抓住它去做一些旋转。那如果我们的扳机键,比如说我们做 u i 啊,那我们利用的是扳机键啊,上面的扳机键去点击啊,去做点击交互 那两个两个按键啊,比如说我们抓住这个物体,按抓握键抓住这个物体,然后再让我们的扳机键啊就可以,比如说开枪,抓住开枪啊,两个不同的按键。

那在你的工程里面其实是已经加载了这个 sdk 的,是 ok 可以 用的,但是呃,你放到别的工程直接拷贝我们的工程的话,就会丢包,没有包错,那我们直接点击上方的 windows package manager 打开, 然后点击左上角的加号,点击 add package from disk, 从网从我们的词典里面去加载包,然后找到我们刚才的这个 sdk pico sdk 这个解压的文件夹位置,然后点击这个 package。 jason 啊点,点击一下这个,然后点击打开,然后它会自动安装我们的 pico sdk。 那 因为我们现在是通过硬盘加载进入的,我们这边的 packages 文件夹下面是没有这个呃 pico 的 sdk 包的。所以如果你在拷贝工程的时候,直接拷贝这几个 啊,打包出去放到别的电脑,打开之后你会发现丢了 pico sdk 这个包啊,那在你的工程里面其实是已经加载了这个 sdk 的,是 ok 可以 用的,但是呃,你放到别的工程直接拷贝我们的工程的话,就会丢包。那一种简单的处理方式就是 ok, 我 们先把这个包先给它移除掉, 好,移除掉之后我们找到刚才解压的这个文件夹,我们右键直接复制 好,打开这个工程所在文件夹,然后在 s s 这边的 packages 这个文件夹进入,然后把我们的刚才的 s d k 包直接黏贴进来。好,黏贴进来之后,我们回到工程 unit, 会自动加载 packages 文件夹,下载 s d k 包 放进来的这个文件夹。一定要注意,我们的 packages 进来的这个 s d k 包打开就需要有 package json 这个这个目录不能再多一集文件夹包裹,再多一集的话它会找不到汇报。 ok, 那 我们这样子就有了拷贝工程的时候,我们拷贝 s s packages、 project setting 这些文件夹拷贝到别的电脑里面,也就是可以使用的。

哈喽,大家好,今天给大家介绍如何使用 unit 对 一个数字装配的一个生产环节进行数字孪生的开发,然后这里的话是已经做好了一个半成品吧,然后 这里的话是这个机器人我给了他一个关节角数据,然后他现在以六十赫兹的频率在不断的刷新他的关节角数据,然后机器机械臂在进行一个呃呃随机运动, 然后这里的话是这个这个数字人生这个软件界面,然后这里包括关闭 ui, 打开 ui, 然后这里是自由视视角,左视左侧视角,然后前侧视角,然后 上侧视角通过这个按钮可以去切换不同的视角,方便他进行查找。然后右边的话是关节脚以及他末端的比卡坐标器的一个实时的一个坐标显示,然后这里的话我们原数据是通过给这个单,给这个应用体当中去发送这个机械臂的关节角, 然后这个末端位置的话是通过这个关节角以及这个机械臂通过 d h 修正法去进行一个正运动学解算,然后得到了机械臂末端的位置,然后这个末端位置是对的,然后当然 当然关于这个的话之前还尝试过,就是说我们通过输入这个机械末端位姿,然后去反向的去做逆解,去解这个机械臂的关节角,然后这个功能的作用是就是说我去拖动机械臂这个末端,然后这个机械臂能跟着走,然后当然后这个是 这是之前想要提出的一个升级版的功能,然后然后这这边的话就是说树杪生的话,他存在一个很大的问题,就是说怎么让 仿真当中的环境跟现实当中的环境进行一一匹配,就比如说我们这里这个仿真当中摆放的这个这个这些桌子呀,然后机械臂,然后这些弓箭呀,然后工作台这些东西的位置和现实当中怎么去对应,那么他们之间肯定会存在误差的。所以说 我这里提供了这样一个输入框,而这个输入框它是可以去改变我们这个工作作业面的它的位置的, 因为我们这里需要去进行一个螺酸装配的场景,那么我们的核心工艺就是说我们这个这个螺酸他一定是要呃跟这个孔是正确配合的,那么我们但是我们这个工作台他的位置不一定跟现实当中一模一模一样。所以说这里提供一个呃修改的一个接口 这个功能,他可以在这个软件上面去直接修改这个这个这个工作台他的位置,你看然后他这个功能还就可以进行修改, 而他通过,而他通过现成当中机械臂处于某一个点,然后去做这个访人当中这个弓箭位置的标定,然后通过这种方式进行一个标定,然后这个数据是支持本地保存的,然后下次打开他依然会在这个新的位置进行更改,然后这里设成这个,然后 左下角的话是一个呃,是 unity 里面支持的一个相机功能,这个相机的话是装在这个机械臂末端的,它是可以跟随这个末端的视角去发生变化的,你可以看到它摇摇晃晃的,就是它是一个底端的一个呃视角,相机视角, 然后这个的话就是一个这个软件的一个实时显示,然后然后那么他这个是如何实现的呢?首先的话这个主要涉及到这么几个部分,首先是这样一个虚拟的一个输入源声场景搭建, 然后其次的话是如何去通过脚本,你看如果去通过这些脚本让这个变成一个可可运动的一个场景,然后跟现实当中一一匹配的一个场景。那么那首先的话,你看这里 这个是这个是这个 u 一 体,这个整个的一个编辑术,然后它的它大体的这个架构就是在这里面,我们这个是 robot 机器人,然后这个 test 是 包括了我们的工作台,然后以及弓箭,然后这个 sense 里面是包括它的相机以及它的灯光设置,然后它的这个 地平平面,就是说你在新开,你在新建一个这个这个 u 一 体的这个项目的时候,然后他这里首先 sense 里面你要去选择你要用的相机视角,然后这里可以设置我们的相机相机的默认的这个相机视角,然后这个这个 这个是设置我们这个 u 一 体这个仿真世界的灯光样式,然后这个 plan 就是 就是我们这个就是我们 u 一 体当中这个用到这个白色的地面, 都通过这个去设置这个整个这个 u 体这个仿生环境的基本的一个属性。然后接下来的话我们就导入这个机器,这个 robert 这个这个导入的是敖伯艾什的机器,然后在导入之前的话, 在导入机器人的时候要按照这个负子级关系,就像他的关节角贝斯是属于贝斯,这个是机器人的基座,它是属于负极的一个关系,然后这个这个是关节角,这个是关节角一,然后这个是 joint 关节一,然后这是关节角二, 通过这样一个父子级关系,把机器人他按照正确的格式,把他把他那个导入到这个里面来,生成这样一个 robot, 然后这样是机器人如果关于这个导导入的话,他这个是要去具体研究的,网上有些教程, 然后你需要大概是需要用这样一个框架去,这个当时也花了很多时间去摸索,然后接下来就导入这个 test, 也就是我们的工作台呀, work case 这个工作台,然后以及我们资源,然后这个就比较简单了,我们直接导入我们这些这些模型文件就行了。而这些模型文件我都是放在这个 这个 oppo unity, 这个 oppo unity 这个 access 这个文件夹里面,在 oppo unity 里面有一个 input, 这里面你就看到我们这里导入的所有这些文件,你发现,然后它这些 它这些统一都是用点三 d s 的 格式,通过这种方式把它导进来,然后然后你导进来直接拖过来,它就直接在这个模式里面显示,然后你去更改 右侧的话,你可以去更改这些物体的位置,包括机前这个机前的这个位置。然后首先就是说,所以说对于这个模型的话,就是它的它的就是操作方法,就是说你先去 把你你那些模型现实当中模型把它转换成点三 d s 或者说这边支持的一些格式,然后反正这里我觉得比较好用的格式就是点三 d s 格式, 然后先导入到这个文件夹里面啊,这个文件夹就在这个 u 一 体这个 access, 这个 appu 的 这个根目录里面,你直接把你的模型文件导到这里来,然后他在这里就会显示出来,而且会展示出这个模型的预览。 如果你导进模型之后呢,你直接把这个模型拖到这里面去,然后他就可以默认的话,你拖进去的话,他会在这个世界的原点,然后那你就要去点住这个,你导入这个模型文件, 然后去修改它这个 position 啊,然后 location 啊,然后这个这个比例啊,你去修改这些,然后就可以,然后你就把这些模型去移到你对应想要的那个位置上去,然后搭建这样一个,然后你首先那这样的话你就可以搭建一个跟现实当中一比一的一个数字函数的一个场景, 然后那么存在误差的话,那你就可以通过这种方式去去做一个一个精细的一个调整,然后这个是模型导入,那么还一个更重要的是还一个,还一个环节是我们去设计这个我们速转生的 u i, 你 看我们这里所看到这个界面上面的这些,所有这些,呃,不管是视角啊、按钮啊,还是说标签的一些数据刷新显示的话,他这些都是通过这个 u i 设计去实现的。 ui 它是怎么实现的呢?在 u 一 体当中,你右键的话,这里会支持 ui 有 很多一些操作,它可以支持 image 图像,然后这个 tab tab, 这个就是那个按钮嘛,然后这个滑动条,然后这里包括了就各种一些常用的一些 ui 的 一些控件,包括这个是 tab 设置文本, 然后他是怎么搭建的呢?首先呢如果我们要去编辑这个 ui, 我 们就新建一个这样的 ui 一个文件夹,然后我们直接在这里去新建这个 ui, 比如说我们要新建个文本,我就直接点 test, 这个时候他就新建了一个那个 test, 然后那么我们怎么去编辑呢?对于这个我们在正常情况下,我们看到的是这个 u 体这个三 d 的 一个这个场景显示,然后我们要去编辑 ui 的 话,我们直接选中它,然后我们点 f 键, 这个时候它就进入了这个点 f 键的话就会就不管你点哪个东西,你点 f 键,它就会直接居中显示这个,你选中这个物体,然后这个是应用当中一个按钮功能,然后那你选中这个 ui, 然后你点 f 键,然后放到这个 ui, 然后这个时候你会发现我这个界面上只有 ui 了,然后这个时候你再点右上角这个二 d, 然后这个时候你可以看到你现在就进入了这样一个你的 ui 设计界面,然后而实际上你会发现什么呢?实际上你会发现,呃,现在我们这个世界变成 ui 了,然后对吧?然后我们先关关闭这个,然后我们会发现他整个逻辑是什么呢?整个逻辑其实是这样的, 你看他是这个他,你会发现他实际上这个你刚刚那个三 d 士图,他就在这个位置,所,所以说, 所以说他这个二 d, 所以 你会发现你最后运行的这个窗口,他实际上就是让他这个三 d 这个三维这个场景跟他这个二维平面这个 ui 两个东西合在一起,就变成了你最后显示的这个输入栏上界面了, 那我去编辑 ui 的 话,我们就直接选中 ui, 然后我们选二 d, 这个时候我们就可以进入这个 ui 的 编辑界面, 然后变 u i 的 话,这里的话我们这里可以去插入一些按钮啊,包括我这里刚刚新建的这个呃文本啊,就这些你可以去去网上查一下教程,就怎么去设置这个设置这些东西。然后然后你设置完了之后呢? 然后你看这里是对按钮进行一些引用,然后这里是插入这个 emoji 这个图像,然后这个图像相机,然后 input, 然后这个输入输入的一些主键,然后你看他们都跟这个链接在一起,然后这个是这个按钮,然后这个是这些文本之类的, 然后然后那么这里有个很关键的是什么呢?那我们刚刚讲了怎么去导入那个资源环境,导入这些资源模型,然后怎么去设定这个 ui, 那 么 接下来更重要的是什么呢?就是说我们怎么去实现这个我们这个按钮,然后这个这个标签页这个数据刷新, 然后包括这个输入,它怎么去跟我们的这个呃动态链接起来呢?那么这里就要用到 ulet 就 很强大的功能了,就 ulet 它里面支持这个脚本的这个功能,它这个脚本用的是 c 叉, 然后那比如说然后我们这个 c 叉五,这个我随便打开一个,然后这个时候它就会再打开这个 vs studio, 因为它这个 c 叉五默认它这个就是 你在安装这个 vs studio 的 时候,它里面就会有一个开发选项,让你,让你允许你选择是否安装那个 uni 的 开发组件,所以你在安装这个 uni 这个 uni 的 时候,你就要选择安装这个 uni 的 这个开放组件。 那么那么在你这个楼打开之后的话,那你就可以在这个 web studio 里面去编辑这个呃 u e t 这个相关的一些 代码,然后你会看到这个在这个 web studio 里面,它就会用到这个 u e t 的 这个引擎相关的一些那个,所以这就是,所以这就是通过 u 那 个 web studio 来对 u e t。 进行一个开发。 然后那我举个例子嘛,然后你比如说像这这这个部分代码,它就是 t c p server, 这个是用来做这个 t c p 数据的一个监听的,我在这个这个代码里面我就可以去监听我这个电脑的那个 呃端口,幺二三四七这个这和这两个端口啊,这个幺二三四七这个端口就是用来搜搜我们这个 t c p 这个关键角数据的,然后我这里是临时写了一个那个呃 python 的 一个脚本,然后实际现实当中我们是通过机械臂, 机械臂的那个机械臂给那个这个那个上位机去发送那个关键角数据都去接受的啊。在这里我做了一个模拟,就说我让这个 python 脚本去发送一个随机的一个关键角数据,然后让, 然后他是给这个幺二幺二三四七都给这个端口去发送数据了,然后这样,然后我通过,然后我在 u 一 体当中呢,就是通过调用这个脚本去接收这边的数据,然后从而实现我们当中我们这里看到这个机器人,这个机器人的一个随机运动, 然后而且它是实时的,而且它频率频率设的是五赫兹。然后这个是 tcp, 也就是我们这个机械臂关角,包括通过这个 tcp 的 话,如果我们在这里 joy 五这里面就会去更新我们这里这个关角这个数据显示, 他就会把这边,把我们那边这个 t c b, 这里 t c c 网这里面接收到的数据,然后再 join 幕这里面去显示到我们这个文本上去。而你看这个显示的话,他就他就调用这样一个变量,然后去他的这个属性,然后去设置关键角,你看这个就是我们这个显示出来这个数据, 然后他这样就是一对应的。然后所,所以我们在这里接收数据,然后在这里去跟 ui 去做链接,然后去实现一个成功的一个显示。 然后那么我们如何去使用这个脚本呢?比如说我们这边已经编辑好了一个脚本,那么他是如何跟我们这个 ui 界面进行链接的呢?你会发现在 u 一 体这个每一个这个物品属性上面,你会发现他底下会有一个脚本,你看在这里,然后我们找一下,找一些随机扫一些属性, 然后找一下这个相机,然后这个 input 我 找敖伯这个爱石,然后你会发现你比如说点中这个敖伯爱石这个东西,你会发现他他会底下会有很多这个,你看这个就是他的脚本,你会发现这个 jimmy 木,他就是我们这里用到这个这个脚本这个类 桌面的幕,而这个类里面它它需要你去选择这些属性,然后以及这些,你看这个是 tv server, 它里面让你去输入这个主端口,然后这个这个些端口以及这个,所以说, 所以说它这个整个应用体它的开发逻辑是什么呢?它开发逻辑是,就是说首先呢我通过这个导入三 d 模型去搭建这样一个数据软生的一个基本的一个啊本体的一个场景。 然后其次呢我们去搭建这样一个 ui 界面,去做好这些空点,去放好这些空点,然后定义好这些空点的名称。然后那么再其次我们就通过去写这些脚本 写,比如说我们这个脚本要实现 tcp 的 功能,我就写一个 tcp 相关的一个脚本,我们要写这个 u i 更新的脚本,我就写一个这个呃胶印木这样一个脚本,用来做这个,用这个做这个 u i 更新。 然后那么写完这个 ui, 写完这个脚本之后呢,我们就把这个脚本挂载到我们对应的这个物体属性上去。比如说我们要写这个机器人 tcp 数据相关的,我们就把这个机器人木这些,然后 tcp server 这些挂载到这个机器人这个这个上面去。我们直接这个使用方法很简单,你只要把这个东西 拖到这个东西上面去,它就会自动添加到这里面来,所以这个就是,所以这个就是这个 u 体非常好非常好的一个点,就是说它的这些代码编成什么的,然后这个场景编辑什么的,它可以通过这种 拖动的方式,通过通过一个一个小组键,你这里可以加很多很多个组键,你比如想要让这个机械笔加上了碰撞检测的功能,你就再写一个碰撞检测脚板,然后拖到这个机械笔上面去。然后那么 ui 更新的话,那你看在 ui 上面,我就,我应该就是把这个 ui 相关的这个拖到上面去,但是我这个 ui 可能没挂在在这里,我 ui 可能是挂在这个相机这个上面去啊, 然后在相机这上面应该挂在了这个这个相机视角,你看这里边挂的就是没有 control, 这个就是用来控制我这个鼠标去拖动这个视角的这个呃,滚动速度啥的。然后所以说, 然后通过这里的话就是输入我们这个这个 pos 音库的,就是我们这里写好的这个,呃, pos 音库的这个脚板用来输入这个,用来输入这个弓箭,对这个弓箭进行一个位置的一个调整的一个那个脚板, 然后所以的话这就是这个 unit, 它去实现它一个树卵生长景开发的一个基本的一个方法,然后就这样的。

好,这样子我们就有了一个第一站人称的切换功能,这里我们制作导入之前确保我们的工程 windows package manager 下面确保安装了我们的 cd machine, 如果没有,那我们安装一下, 同时确保我们下面的 input system 新的输入系统也安装一下。我们的第三人称用的是这个新的输入系统,第一次安装 input system 的 时候,它会给我们的工程做一些简单的小小的修改,那这里我们点击 yes 重启工程就可以了。工程重启完成之后,现在我们就可以导入我们的第一三人称切换的这个插件,把这个插件拖拽到我们的 project 图里面,放手。 好,这里会覆盖到我们之前的一个第一人称漫游的控制代码和这个是覆盖的,其他的都是新的,那我们点击导入, 导入完成之后,我们就可以在 j packages 下面找到我们的第一人称漫游文件夹里面有一个第一三人称切换控制,把这个预制体拖拽到我们的场钉场景里,然后把我们的预制体,我们现在的预制体在很远的一个位置,那我们把我们的第一人称的这个位置右键 copy 一下我们的起点位置,给它设置一下。 好,那这个我们的第一人称就挪到了这个位置,我们把这个挪到地面上,好放进来之后,我们之前的这个第一人称就可以删掉,或者说关闭,先关闭,那我们这里面就会有一个第一人称和一个第三人称。 然后我们的场景里面如果有导航,还有我们的小摄像头也要做一下简单的处理,因为之前关联的是我们的第一人称,那我们把我们的原本这上面的第一人称改成我们第一三人称,下面控制的这个第一人称,还有我们的导航寻路线下面的第一人称也给他改过来。同时我如果如果场景里面有一个,比如说物品放大查看还有摄像头的 啊,像我们原本的主摄像头上面有添加了 stack 这个 overlay 的 摄像头啊,那我们这边也同样的给它添加一下,就是让两边的主摄像头的配置保持一致。好,设置完成之后,那我们在场景里面添加一个我们的按钮, 比如说就叫第一三人称控制,我们的按钮放到一个合适的位置,比如说左下角啊,把它放到最顶层的层级,层级大家自己去选择,然后我们的按钮有一个行为,在 inf inspector 属性面板这边点击点击的事件,然后拖拽我们的第一三人称控制, 找到上面的代码里面的 switch player view 就是 切换我们的玩家视角,可以点一下切换我们的第一人称,点一下切换我们的第三人称。完成配置之后,我们运行我们的工程,我们默认是第一人称,跟之前一样前后左右可以漫游,点击左下角的第一三人称控制切换点一下。 好,那我们就切换成了我们的第三人称,也可以用我们的键盘右键还有 w、 s, a, d 键进行漫游,再点一下切换回来,这样子我们原本的这些控制也都是正常的。好,这样子我们就有了一个第一站人称的切换功能。

哈喽,这里是二进至二,师傅,我们今天是学习二 d 动画,骨骼动画这个部分我们可以在网上去找一张参考图,去绘制一下我们的一些角色,然后我绘制了这样一个角色,然后将你绘制的角色导出成 png, 直接拖入到我们的 unity 里面,我也是第一次做这个骨骼动画,所以我们一块来学习一下哈。 首先需要去处理一下你的图片,那首先我们默认的就是要改改成 spread 模式,然后进行 spread editor, 你 改了之后要去进行 apply, 然后在这里面去找到谁呢?找到我们底下这的 skin editor。 好, 那这里就可以去对它进行一个绑股了。首先第一步先去绑定骨骼 cret bones, 你 点击的第一个骨骼点是它的根,骨骼点后面都会以这个去移动,所以我们这里可以选择它的 身体去作为他的根骨的点。好,我这里直接去进行点击,这是我的身体,这可能是我的腿, ok, 然后我想要在这里引一条出来,这边对应是我的左腿, ok, 这应该是我的左腿,然后我在这里处理好,然后你还可以处理的更细致,比如说把脚给加上,然后这边处理连接的是我的右腿, ok, 右键左键就是点击去进行建立,然后这边腿部这边确定好了,我们又点到头部这边,头部这边是不是就可以连接到我们的角色的头?好,就是往上, ok, 然后这里弄好了,我们这里又对应我们的左手和右手,这个应该是我的左手,这是我的右手, 然后进行绑定右键,然后这边对应出来是点击, ok, 这样就基本上全部绑定完成。好,绑定完成之后,你可以看到这是你的根骨骼点,然后这对应下面是你的一些子节点, 是大概是这样一个样子,然后同样你也可以去改他名字,如果你改了名字之后,可能会方便你去进行记忆。 ok, 我 们骨绑好骨骼之后,我们下面一步直接去进行自动地去进行一个 mash, 直接 generate, 大 概是长这样子,但自动的部分它可能会有一些这样没有切到的样子,会有一些偏差,你就直接点到 edit, 然后去把这些拖动一下,让它去贴合你画好的东西,然后这边就随便去贴合一下, 可以稍微处理看一下,去删除一些不不必要的一些节点。好,那你处理好了之后大概长这样子,下面一步进行一个刷权重,上面就是去拆分它的 mash, 上面去进行刷权重,那同样我们也是自动去刷一下这些权重, 好为它去进行 generate 生成。大家全是长这个样子,你可以稍微去处理一下它,感受一下它有没有一些什么问题。 好,我们处理好了之后,我们直接去进行 apply 去记得应用一下我们刷整理好的东西。好关闭当前的一个 sprite, 将我们的 player 拖到我们的场景中。 ok, 拖到场景中之后,我们这里需要去给它添加组建,添加二 d animation 中的一个 sprite skin, 这个组建 好添加后,组建之后,我们这里给它去添加 bones, 我 这个地方因为我已经去进行了 spread 处理,所以就添加 bones 的 时候,它就会自动去贴合它的骨骼。看到了吧?那因为我现在画的这张图片是拆分开来的,所以我还需要去将我的这些物,这些部分给它结合起来。 好了,这个人画的其实有一点比例非常奇怪哈,那我们这样拼好之后,我们下面一步就可以来去制作我们的动画了,那我们就点击到我们的玩家,然后直接去进行 get create 这个 animation, 然后我们直接点击到我们的录制这个部分,就会和我们之前讲过的真动画就很像了,相当于你录制的时候去移动它的关节点,移动一些部分,它就会实现一个真动画的效果。那比如说我这里点击录制,然后点到这个关节点,我说让它 旋转一下,比如说我的第一帧可能就是正常站姿的一个帧数。 ok, 这是我的第一帧, 它的原理会和我之前跟你们聊到过的是一样的,就是它是一个循环动画,所以你得保证它第一针和最后一针它是一模一样的。比如说我到我的第二针是我的的一个抬腿动作,我要去进行走路嘛?好, 这比如说这是我的第二针,然后可能手臂有一些自然的浮动, 可能大概这个样子。然后我这个地方我确实没有做过这个真动画,所以现在很奇怪,但是你们可以看到它能动起来了。 ok, 如果你们和我一样,也不知道怎么去 k 这个骨骼动画,你们可以去网上找到一个 呃姿势图,根据这个姿势图垫在这个图片下面,一帧一帧的去 k 它,这样就可以了,然后可能会要稍微费一点时间, 大概是这个样子。当然这里同理,你不仅仅是可以去 k 你 的角色的动画,你也可以拿它去使用,去 k 一 些其他的动画,比如说一些抽象的一些交互小物品啊什么之类的,让它们会有一些比较好看的效果。好吧,那就动手做起来吧。

好的,我将用一个视频,一十分钟之内快速的带你入门。 unity 怎么去使用我们的 unity 啊?我们 unity 下载好了,打开一个项目大概是长这个样子,然后可能你的布局会和我的有点不一样, 我这里是一个二 d 的 项目,当然其实在游戏开发里面二 d 和三 d 的 区分并不是很大,比如说你看我把这个二 d 的 图标打开之后 关掉之后,这一样的也是啊,咱们的一个场景,三 d 的 一个场景。好,我们一个窗口,一个窗口来进行介绍,我们比较核心重要的是第一个 hierarchy 窗口和我们 sense 窗口,这两个窗口你可以理解为一一对应, 这个场景里面有的所有东西都会在我们的场景窗口内去进行看到。那比如说你新建了一个项项目之后,它一定会有一个相机,然后对应的会有其他的东西,当然这个更详细的一部分我后面会去进行讲到,我这里只是快速的来带我们进行入门,好吧。 然后这是我们的一个 game 窗口, game 窗口这边你可以发现你什么都点击不了,这是我们游戏运行时候可以看到的一个视窗的窗口,你可以在这里面去进行玩你的游戏,去进行一些互动。 ok, 这边是我们的 inspector 面板, inspector 面板你可以理解为其他开发软件里面的细节面板或者什么之类的。比如说像我现在是点到了我的 main camera, 所以 这边是我对于我的相机的一些参数和组建。 ok, 这细节的部分我后面也会跟你们讲到。然后下面这个部分比较重要的是两个窗口,一个是 project 面板,一个是 console 面板, part 面板你可以理解为就是我们的项目工程文件夹,你可以在这里点开右键修 in folder, 你 就可以看到我们这个项目 资产文件夹里面的所有东西,我们后面会把我们所有东西放在这里面,我们的场景,我们的素材,我们的代码好。第二个比较重要的是 console 面板, console 面板就是你在游戏运行的时候,这里会给你报错。好,我们的几个窗口,大概了解完了之后,我们可以来看到上面这部分用到比较常见的 啊,大家都知道在一个文件里面,上面这部分很多东西都是不会用到的,所以我这里就讲我们会用到的东西。第一个 打开文件文件这个部分,如果你在以后要把这个游戏做好之后打包出来,最常用到的是这个地方, build settings 就是一个项目的一个设置,你会打包成开发成什么平台,那我们就在这边设置好了,然后再进行 build, 这个部分细节的我后面也会讲。第二个就是我们的编辑,编辑这里面比较常用的是两个,一个是 project setting, 一个是 preference, project setting 里面就是有我们项目里面的所有的设置,比如说我的渲染管线,还有我的一些输入设置,物理属性啊什么之类的一些设置。另外一个是 parents 偏好偏好设置,这里面其实也只是一些颜色设置,比较重要的是这个东西 终端工具级的设置,有很多新入门的朋友,他这个地方会出一个问题,就是他写好了代码之后,这个代码双击点开,他可能没有办法打开编辑器,或者打开了编辑器之后,这编辑里面都没有报错,这里对应就要选择你自己的那个编辑器,他才会进行打开,然后并且报错,好吧? 然后这两个部分就是这个样子,然后这里有 assets, 然后有 game object, 这个地方都不用管它,这个地方你看它的名字是不是和我们这个地方名字一模一样,那相对应的就是这边右键可以新建的东西,所有的就是我们这个的地方的东西。好,这 game object 就是 我们的物品, 它你仔细看一下,这地方可以 create empty, 有 二 d object, 三 d object, 那 这里右键是不是和我们这上面的 game object 长得一模一样,所以相当于这两个是不用管的,这 asis 是 在这里对应的,然后这个 game object 是 在我们的场景里面去进行对应的,我们在这里去进行新建就可以了。 然后这边是 component, component 是 在 unit 里面比较重要的一个概念啊,它的组建,这些组建会构成我们场景里面所有能做的一切事情, 包括我们这个东西能被看到,它可能会需要 mash, 会需要 ringer, 如果它需要去进行移动,它可能会需要一些 physics 属性,如果它有声音,有或者一些其他的东西在这里都需要用到, 但是我们也不需要在这里去创建它,因为我们一般比如说这是我的一个 object, 我 需要在这里去进行创建就可以了。可以看到这里有一个 add component, 看到了吧?好,所以相当于这三个都是我们一些 以后都会常用到了,但是我们都不会在这个地方去新建它或者去添加它,那我们就不管它,好吧?然后这个地方可以直接忽略掉,然后我们来看到 windows 面板,那什么是面板?我们这些是不是就是我们的面板?那我们常用的几个面板其实就都列在这里了。然后当然在你后续使用中,比如说你可能会要去做动画,可能会要去做虚拟帧的东西,那这里就可以去 点击打开我们的对应的面板面板,这个我们后面学到,或者是你需要用到的时候,你就再去网上去 问我要打开一个面板,我在哪找它就可以了。这里比较重要的两个东西是,一个是 asset store, 一个是 package manager, 这个就是我们的 unity 提供的资产商城,它点开之后会显示这个,你直接点 search online 就 可以了。呃,当然现在因为 unity 它其实已经退出中国了,现在在国内的 unity 是 一个环境引擎号, 这个地方有很多的瓜这,但是咱们可以不用管,因为咱们用的话,如果是用些本地的资产,或者是你买的资产,就不会在 uni 商城里面去买,那它对你的影响就不大。你先了解一下,因为这也是获取一个资产的一个途径, 我也也后面也会告诉大家怎么去找资产,就是因为我相信很多他是不会画画或者是不会建模的,他就是纯程序员的,那他怎么又去做自己的游戏呢?就是我们要善用资产,好吧,我们用资产去做我们的游戏可以了, 那我们这个先不管,比较重要的是我们的 package manager 包管理器,他一个项目里面他不会给我们提供所有的包嘛?那我们在用的时候我们就可以去 新增我们的包。比如说像我现在用的是一个 building 的 一个渲染管线,那这个渲染管线里面就有很多的东西是没有的,那我就会去后续地去增加我们的很多包,那你知道这个地方是去添加我们的包就可以了。比如说很多登记的包,你在这里就点到我们的 unity registry, 然后在这里去搜索就可以了。 上面这个部分基本上就给你们讲完了啊,这边 help 就 不用管它了。看到我们的游戏这个里面来教你们一些应该可以说是快捷键的部分,因为在 unity 里面我们也需要去进行场景建模嘛,就比如说一些白模的搭建, 那我现在是一个二 d 的 项目,你们可以先不用管,然后我现在是在 ui 的 一个窗口的部分哈,你可以,如果你是创建的二 d 项目,你可以和我一样把这个二 d 的 这个取消掉。 好,我们在我们的 sense 面板里面它有几个快捷键是什么?第一个就是,呃,使用鼠标中键滚轮去进行缩放,看我们的东西,那你说如果我在场景里面去新建了我们的 cube 或者什么东西,你找不到它怎么办? 第一,双击点它,它就会缩影到 ok, 或者是第二,按住我们的 f 键 find 也可以快速缩影到它。好,那我就以这个 q 来说,然后同样的你按住你的鼠标 alt 键,然后就会出现一个小眼睛 样子,你就进入了预览模式,这个时候你再按住中键,你就可以在当前这个视角去进行你的一个场景预览。 好,然后你按住你的鼠标右键也会出现了一个小眼睛,但这小眼睛下面有一个凸字的一个形状,这个是不是就很像游戏键盘上面的上下左右嘛?所以这个时候你按住你的 w、 s、 d, 你 可以在场景中去进行预览,场景中预览 ok, 然后按住 q 和 e 就 可以上和下行,然后这是这个部分, 这是场景中可以按的一些快捷键,你按住你的鼠标中间的滚轮,就是一个小手的样子,就可以去拖拽你的这个。呃,场景拖拽整个东西,好,这些是场景里面可能要知道的一些东西。好吧,这是按住右键可以拖拽的 ok, 然后下面一个就是怎么去改我的模型,就是我们的一个 q, 我 们现在的快捷键,因为里面快捷键是 w、 e r, w, e, r, 学过玛雅的应该对这个要稍微熟悉一点哈,我记得玛雅的快捷键和这个是一样的, 但是有很多其他的建模软件的快捷键不一样,比如说 blender 里面是 g、 s、 r 去控制它的移动缩放好, w 就是 我们的移动, 可以在不同的轴向去进行移动。好,我们的 e 就是 我们的旋转。好,我们的 r 就是 我们的缩放。好,你看我这里去修改我的数值的时候,这边 insect 面板里面是不是在 transform 这个铺部分,它会有数值的改变,这个是 scale, 然后这个是 rotation, 然后这是我们的 position, 看到了吧,所以相当于这个就是我们的细节面板,在 transform 这个部分它就会 去改变它的一些东西。哎,这个地方差不多你就把 unity 里面所有的能用的东西你都知道是怎么进行使用了,好,我们又可以回到我们的。呃,二 d 这个部分,或者说回到我们的 ui 这个部分,还可以再给你们说一个比较好玩的就是, 呃,为什么我这里突然变得这么糊啊?啊?好,影响不大。比较好玩的就是在里面会多一个快键,是我们的快键 t, 你 可以看到 w e r 一 样可以进行缩放, t 这个地方是有个图标这个样子,呃,如果你是作图比较熟悉的话,这个应该是 就稍微要了解一点了。我一般在二 d 里面,我会喜欢使用 t 去进行修改这个图片大小或者是缩放去控制它,好吧,就是大概这样子。然后你看我这边点了之后,我这边细节面板里面有很多东西,包括有很多可以实现的功能,那我们也已经说了,我是想要在十分钟之内告诉你 这个东西怎么去搞。 ok, 好 像现在可能已经超过十分钟了,所以这些细节的东西我会在后面的课程里面一步一步的告诉你,我会用一些小型的项目告诉你项目怎么落地,然后这些东西怎么去进行使用,包括怎么去进行写代码,好吧。

三分钟快速了解特效制作。大家好,这个视频我们来看一看 unity 粒子系统的造波,我们现在看到的这个树叶有组织的群体飘动,动画效果本身的制作并不复杂,只需要给一个持续发制的粒子系统添加造波动画就可以。 unity 的 粒子系统的造波模块是一个纯数学驱动的程序化模块,用过的同学应该都知道,造波在试图里是不可试的,而且随机性极强,主打一个捉摸不透。其实我们可以借助粒子系统本身让造波可视化。乍看之下和使量场很像,但是使量场是局, 而噪波他没有固定的空间边界,当三个轴向的噪波叠加之后,动态效果几乎是无法预判的。那即便如此,我们还是可以通过对参数的了解去大致的把控噪波的。动态噪波场的参数有不少,而且每个看起来都不太简单的样子, 其实我们只要掌握几个关系到噪波场整体动态效果的参数就可以了。经验之谈,参数越多越容易调乱,所以抓住几个关键参数去调整就好。 有四个参数我认为是最重要的,它关系到整个造波厂的动态效果。我们先从第二个看起力度,力度就是粒子的移动速度,当这个值越大,粒子的移动速度就越快。 第三个频率,频率决定了粒子移动的丝滑度,如果将它设为零,粒子几乎是以直线在移动的,如果设置为一,他就会开始扭曲,设置为十,他就直接开始抽抽了。我个人比较喜欢的是零点一这个轨迹,然后下面这个 remap, remap 勾上之后,这里就有一个曲线,这个曲线会将负一和一映射到零到二五五的数值。如果我们将前面这个负一改成零的话,会发现这个粒子开始沿单方向移动,也就是说在零到一之间,粒子是正方向移动的, 而在零到负一之间,粒子是往反方向移动的。当我们的数值将它两个都设置为零的时候,粒子就开始原地不动了。最后我们来看一下分离轴向,我们将它勾上之后,就可以在 x、 y 和 z 三个轴向上分别对它进行控制。我们可以先将 z 设为零, y 设为零,这个时候它就只在 x 轴上做移动。 当我们将 y 的 数值设为一的时候,就在 x 的 基础上叠加了 y 的 移动,这就变得比较复杂了。然后我们把三个轴向全部都叠上去之后呢,动态效果会变得更加丰富,同时也变得更加难以琢磨。在滚动速度和 remap 之间的这对参数,它是对这个造波图的细节的一个调整, 细节越多,它对性能的消耗也就越大。常规情况下,我们只要调整好它整体的动态效果就可以了。最下面三个参数就是涉及到这个灶波是否影响到粒子的位置旋转和缩放值,那么旋转和缩放值通常我们是不用去管它的,我们只要管它对粒子的位置有影响就可以了。 讲完了灶波厂的重要参数,再回过头来看一下片头展示的飞舞的落叶,我们看一下是怎么设置的。创建一个粒子系统,然后将它的 shape 设置成 box, 发射位置改成体积,设置一下这个 shape 的 大小,如果这个时候直接对它应用一个造波场,我们会看到一个飞舞的非常平均的例子,这个跟我们的预期效果是不一样的,所以先将这个造波关掉,给发射器的 shape 一 张造波图,将裁剪域值设置的大一点,这时候我们会发现叶子没有了, 我们来增加一下它的发射率。通过照波图以及对它的裁剪,我们精准的将粒子控制在了几个位置。然后这个时候开启照波的话,就可以看到它们是一条一条的集群式的运动, 而不是铺天盖地的平均式的运动。集群式的效果完全是靠粒子数量堆出来的,伴随着粒子数量还会有 overjoy 的 问题,对性能会有比较大的影响。我现在在做演示嘛,所以用的粒子数量比较多,实际做项目的话,一方面要严格控制粒子数,另一方面特效的透明模式要尽可能使用 cut off 解决 overjoy 的 问题。好了,本期分享到这里就结束了,如果觉得有帮助欢迎点赞加关注,我们下期视频再见!

三分钟快速了解特效制作。大家好,上一个视频我们讲了造波,造波虽然可以制作复杂的粒子动画,但是可控性低,主打一个让你猜不透。假如我们要精确的控制粒子,做复杂的轨迹运动,那就需要依靠矢量场。那什么是矢量场呢? 可以将它理解为一个局部空间的立场,在这个立场里面的粒子会受到力的影响,沿着力的方向和速度进行移动。 on real 引擎的原声矢量场是随着 visual effect graph 才 正式推出的,文件格式是点 v f 是 v f x graph 的 体积文件格式,所以要用 v f 文件必须要先安装 v f x graph。 虽然是 ve 的 东西,但实际上普通的粒子系统也能用,因为平时 ve 用的同学很少,所以这里我就用普通的粒子系统来做一个演示。 我们先在场景里创建一个粒子系统,创建好之后将它的位置和速度都归零,然后把它的发射器形状改成 box, 降低粒子的大小,提高粒子的数量,数量多了我们才能够看的更清楚一些。然后再创建一个立场, 立场创建好之后,我们同样将它的形状改成 box, 然后直接看最下面。我们看到这里有一个屎量场,只需要给体积贴图,这里添加一个三 d 纹理,这些彩色的方块都是三 d 纹理。找到我们这次案例所使用的这一张双击, 将下面的引力设置成一,再回到粒子系统往下拉,将外力模块打开,这时候我们就可以看到粒子系统已经受到了矢量场的影响。矢量场是可以任意调整的,但是我们在选择矢量场的时候,粒子系统就不动了,所以呢,我们要创建一个贪曼,然后把这个粒子系统放到贪曼上去, 这样我们就可以在播放动画的同时去调整这个立场,立场的角度可以随意的调整,每次的调整都可以实时的反映到粒子上,然后我们还可以对它进行一个移动 缩放,只要在场内粒子就会受到影响。那么我们怎么样能够看到这个立场,他内部的力的结构到底是什么样子?虽然他有好几种的预览方式,比如说在体积的这种模式下,我们可以调整阿尔法值去穿透它, 或者我们可以在 slice 这个切片的模式下去调整这个切片的位置,看每一层切片它的颜色是怎么分布的, 或者用 sdf 这种模式直接调整 offset, 可以 将它镂空,非常的有意思哈。但这种调整对于力的感受其实并不直观。有插件可以将矢量场格式化,也可以像我一样比较简单粗暴地直接创建一个矩阵粒子, 然后将它的渲染模式改成这个拉伸的面片,然后打开外力播放粒子动画,可以非常清楚的看到这些力是将粒子往里吸附到这些样条线上,并沿着样条线移动。 了解了这个立场的效果之后呢,我们就可以把做好的这个粒子系统丢到立场里面去,然后打开受外力的开关,让粒子沿着我们想要的轨迹去运动。区别于程序化生成的造波场,矢量场跟其他的游戏资产一样,是由开发者制作的,所以是定制化的粒子运动轨迹,你想让他怎么运动他就怎么运。 尺量场这么酷,为什么常规的游戏特效中很少使用呢?根本原因是因为性能开销大嘛! c p u 或者 g p u 需要不断地去计算每个粒子在空间中的位置,还要实时地去读取这个位置的向量数据去改变它的运动轨迹。而且三 d 纹理还占用内存或显存, 目前绝大多数在研的项目都是移动端手机,这点性能粒子数量都要掐指算着用的,给了史量厂也是浪费资源。而且史量厂的制作门槛高,高质量的史量厂除了虎丁尼,目前几乎找不到好的代替软件,尤里提官方甚至只提供了虎丁尼输出 vf 文件的方式 工具。在 unity 官方提供的视觉效果工具包里面,大家可以在网上搜索一下 vfx two box, 这个是 github 上的一个开源项目 on real 的 实战场文件 fga, 它的制作渠道就相对多一点,所以呢,也可以先做 fga, 再转到 unity 里面去。 基于以上原因,尺量厂的制作我就不继续深入了,点到即值吧,因为这个在平时的实际游戏开发当中应用实在是太少了。如果大家想在个人作品中添加一些尺量厂效果的话,可以直接去资源商城找现成的尺量厂资源包, fab 上有几个应该能够应付日常的使用了。我这里也有一些转好的尺量厂资源, 如果需要的话可以在评论区艾特我。 ok, 那 么本期分享到这里就结束了,如果觉得有帮助,欢迎点赞加关注我们,下期视频再见!