粉丝516获赞1808

今天来实现相机的一个跟随效果,利用鼠标的上下左右移动,可以控制相机的一个视角的转换。首先我们要创建一个 play, 点击立方体胶囊, 秘密为 play 重置, 调整他的位置, 然后再 pray 里面再创建一个立方体, 他的作用主要是当做这个玩家的一个面相方向, 我们可以缩小一点。 然后我们再创建一个外空对象, 在歪空对象下面创建 x 空对象, 在 x 空对象下面再创建一个空对象,命名为 z, z 下面创建一个空对象,命名为 zoom。 在我们将摄像机拖入字幕中, y 负责 y 轴旋转, x 负责 x 轴旋转, z 负责 c 轴旋转, soon 负责远近。我们还要将歪对象进行重置, 然后再调整相机的位置。 我们开始创建脚本, 这里我已经写好了脚本, 大家可以和我同样命名为 camera, 点击打开脚本进行代码的编写,这里我对代码进行注视, 保存代码, 将脚本挂在到摄像机当中。 然后我们将外对象拖入, 将 x 对象拖入,将 z 对象拖入, 将 zoom 对象拖入,这里将玩家 play 拖入, 然后勾选这两个,这个是是否跟随玩家,这个是是否控制玩家旋转, 然后我们运行项目。 现在我们鼠标左右移动,玩家也会跟着上下左右旋转, 然后我们将是否控制玩家旋转,取消勾选, 我们就会看到玩家的面朝方向不会跟随鼠标的旋转而旋转。 对这个是否跟随玩家取消勾选, 我们就会发现移动 play 的时候,这一个摄像机是不会进行跟随的, 当我们点击勾选的时候,移动 play 摄像机会进行一个跟随, 然后今天就讲到这里了,咱们下期见。

大家好啊,今天讲的是添加角色的动画组件,实现基本的行走动画。 今天需要用到的资源在 unity 资源商店里的二 d 角色免费资源里添加后,在 unity 中打开,在 pack package manager 里面选择 my asset, 然后选择下载并导入。我已经下载好了,直接导入就行了。 选择导入,找到 idol 文件夹里的 hero idol fund, 放到场景里作为玩家。 之后添加我们需要的二 d 杆体,取消重力,锁定这一轴。这个上个视频讲过之后,我们要创建动画,找到 windows 你的 animation 或者快捷键 ctrl 加六, 就会打开做动画的视图,我把它拖过来 animation 视图, 然后我们选中 player, 开始创建一个动画。动画文件的后缀是点 a n i m。 我们新建一个 animation 的文件夹来存储这些动画。 新建第一个动画 idol, 也就是没有任何操作的情况下的动画,玩家处于放置的时候的状态, 时间轴上表示秒,这跟剪辑视频的 k 真动画很相似,需要把图片拖拖进来。目前布局不好,我改成适合自己的布局。 左上角是 sense 视图和 animator 动画状态,即视图。之后会讲 左下角是控制台游戏视图,动画视图,右边是 hierarchy 视图, partics 视图和 inspect 的视图,这是 我常用布局这个看个人之后我们把 idol 前视图导进来作为第一帧,这样就算完成了一个动画。 之后我们去新建玩家向后走的动画, 然后把连续相同的图片导进来,他会形成一个动画剪辑。在 unity 动画视图中,如果你导入多个具有相同名称的图片,他们会自动组合成一个动画剪辑, 这个功能被称为序列振动化。然后我们把拉长至一秒,每一秒一次循环运行看效果,这样我们相 后者动画就算完成了。 再次创建一个动画,玩家向前走 一样把图片都拖过来,会形成一个动画剪辑,拉长是一秒,然后运行看下效果好可以去创建下一个动画。向右走动画, 一键导入图片,拔毯子一秒, 然后把文件夹改一个名,玩家向右走,然后新建玩家向左走动画 创建好之后,发现文件夹里并没有向左走的动画,那我们怎么办呢?右键打开向右走的文件夹路径, show in explore, 打开后找到向右走文件夹,复制一个,改名为向左走。里面图片我们只需要翻转一下就可以了,可以用 ps 或者用像素化工具那个 aspect 来翻转。 之后我们先把点 matter 文件文件给删除掉,这样子更好导入,剩下这些可以导入 except。 把图片选选中, 拖进来,同意之后会变成一个像针动画一样的,选中每一个针,然后进行水平翻转, 然后只要 ctrl 加 s 保存就完成了,非常简单。 打开文件夹,可以看到我们的里面的图片已经变成向左转, 一到 unity, 把左转的图片全部导入到动画视图里面,拉长至一秒, 然后一起看效果。嗯,可以每秒一个循环。 其他的动画图片都是比较清晰的, 我们看到画面是有些模糊的,这需要修改一下图片的设置, 选中所有图片,把 filter mode 改成 point, 这样就应用就比较有明显的颗粒感了。 一起要所有动画看一下。 向右走没问题,向左走没问题, 向前向后。嗯, 好了,动画基本就完成了。之 打开 animator 动画状态机 animator 在 windows 下面的 animation 里面的 animator。 animator 是 uni 中的一个组件,用于创建复杂的动画状态级。他提供了一个可视化的编辑器界面,可以让开发者可以创建和管理动画状态过度条件和动画参数。左边的 primaters, 也就是参数,用于设置过度条件, 例如输入的触发器布尔条件或浮点数条件与触发条状态之间的过渡。 橙色的那条线是表示游戏开始时先进入哪个动画。默认是爱豆动画, 剩下走路动画我们先把它删掉。创建一个疯妞。不能的吹,不能的吹。 混合数是英语中用于控制动画混合的机制,通常用于角色控制,特别在角色的动画行为需要根据不同的输入,比如移动速度,转向方向等进行变化的情况下,通过别的处理, 你可以根据这些输入参数值来控制角色在不同动画状态之间过渡和混合,从而实现更加逼真和可交互的角色动画。 创建两个浮点,竖条件,用于状态之间的过渡。水平移动 horizontal, 垂直移动 multicle。 双击进去, 选择适合的混合类型,比如 e, d, 二 d, 我们选择二 d, 然后插数。我们选择好好一张头和 vertical, 之后我们把动作加上去。对于每个天 加到 brandtray 的自动化,你可以设置权重和过渡规则。 我们可以拉动火力粘土的滑块,看看它的范围是多少。根据它的范围,我们再修改 x 轴的值,向左走是肯定是负一到零,那么向右走的动画我们肯定是零到一, y 轴不变都是零。 之后我们添加向前走和向后走的动画, 乱条件是 y, x 走不变都是零,然后向前走 y 一定是负一,向后走 y 是一。 之后我们回到上一层动画状态机, 给 idol 牵一条线,连接到 moment, 并添加一个浮点数条件 speed 判断速度,如果速度为零,那就是他的待机,如果速度大于零点零一, 那他就是在移动。同样,我们还需要从木门特牵一条线到 idol, 如果速度小于零, 零点零一,小于 less 小于零点零一,这样他就回到了爱豆动画,这样我们动画就差不多搞好了。回到场景, 点击 player, 给它绑定一个脚本, player moment 就用上一个视频的脚本吧, 这个就是上一个视频的脚本,很简单。那我们现在需要的是引用动画组件 声明一个 animator 的变量,然后获取玩家的 animator 组建。 然后我们顺便答一下目 x 和 m y 的值,看是否是负一到一之间。 保存回到微信群运行,看控制台值,果然是一到负一之间,但是玩家还是没有动画回到交班。现在我们需要给动画状态机的浮点数条件都负值 s q l magni q 的是一个限量的平方长度。 在 unity 中, s q r macneq 的是一个用于计算向量长度的优化方法,它避免了求方根的开销,因为计算平方根可能会比较消耗性能。回到 unity 运行游戏 好了,动画有了,然后我们可以打开动画控制器视图可以看到数字的变化水平,移动是一到负一之间,垂直移动也是一到负一之间, 移动的时候速度不为零。 然后我这边有几个问题需要修一下,其中就是过渡箭头要去先勾选 has access 看看,如果动画没播放完的话是不会结束,会影响我们的移动效果,然后这样子就比较自然了。还有个是我的摄像头问题,之前的摄像头放的太大了,所以人肯定很小,修改摄像头的晒子改为一, 然后重置全是缝,然后 z 改成负一,这就比较正常的。好了,觉得视频不错的可以点个关注哦,下期再见。

在这个视频当中,我们来实现人物的基本的移动,而且在移动的过程当中,我们也要进行人物的翻转,我们来一起动手写一下这些代码, 那么在我们写代码之前,我们还是来强调一下这个知识点,一旦一个物体上被挂载了 rigibad 缸体组建之后,那么它的坐标就由这个缸体来进行驱动了。 我们打开 regbidi tod 下边的 info 这个位置,可以看见它可以有 position, rotation 和 velocity, 就代表它的 position 和 rotation 可以覆盖原有的 transform 这部分的内容。 还有在之前的视频当中,我们有演示过,我们可以通过修改坐标的方式来让这个人物产生移动,而且我们也可以通过添加速度的方式来让这个人物产生真实的移动效果。那我们通常 常会使用更改速度的方式,我们一起动手来写一下,你就更了解如何使用速度来驱动一个物体了。那我们可以双击打开这个代码,我们接着之前的代码内容来写。 上个视频当中,我们已经成功的获得了我们的键盘的输入以及手柄的输入,他输入了一个坐标值,我们传递到了我们的 input 第二个审当中, 那么我们就可以把这个左右的正负值给到我们的速度上,我们也在对应的方向施加一个速度就行了。那么既然我们要添加速度,那我们就势必要有一个速度的值,我们可以创建一个这个变量, 我们起名就叫做 speed, 它是一个 float 的变量值,也就是一个浮点运算值,可以有小数的创建之后保存你的代码,返回到 using 当中,我们就可以在 inspect 窗口当中看到这个变量,我们 可以在这速度给他输入一个值,比如说二百,为什么输入这么大?接下来我们会在公式中留意到,为什么需要这么大的一个数值返回到运营当中,我们接下来要实现人物的移动,我们要把移动的数据也持续不断的更新上去。 那么在使用缸体 rigid body 这个组件产生移动的时候,我们通常会在 fix update 当中去执行。 fix update 是一个固定更新的值,他确保在不同的设备上,无论你的运算速度是否有多快,他都以一个固定的时钟的频率来进行执行, 所以通常跟物理有关的我们会放在这执行。当然在之前的视频当中我也给大家展示过,我们是其实可以修改我们的物理判断的更新模式有 fix update 和 update, 暂时我们就按照传统的方式用 fix update 里边来写,那么接下来我 我们会写一个函数方法,用来我们人物的基本的移动,起名字就叫做 move, 那 word 代表这个函数是没有任何返回值的,这就是一个基本的函数,那在这里边我们写的内容,我们要在 fix update 当中进行执行,我就可以在这里边执行一下我们刚刚写好的函数 move, 所以在这里边我们要做的就是修改我们缸体的速度,那我们还没有获得缸体的组件,就没有办法更改它,那我们怎么做好呢?我们可以在上面来创建我们的缸体组件,然后来获取一下它,我们再来看第一种获取的方法,我们在上面创建这个缸体的类型, rigid body to d, 起名叫做 r b, 保存你的代码返回到微信当中,这个时候我们就可以看到现在我的代码里边有一个变量叫做 r b, 这里边现在是空的,没有获得任 和的 rigibati tod 的这个组件,那我想获得一个简单的方法,就是我可以将自身身上的 rigibiti todi 点击拖拽放到这个位置,那么我就获得了这个组件的使用权。那有了这个引用之后呢,我就可以调取 rigibid 当中的这些所有的变量参数, 这些每一个你能看到的都可以通过变量的方式去来获得修改他,那么这是一种方法。这种拖拽的方法好处就是他获取的速度非常快,他不需要等你的编辑器执行或者你的游戏执行,他就直接能够获取这个组件的使用权。 如果你的一些组件当中的变量是需要在游戏一开始的最早最早的地方就要执行的时候,那么我们通常用这种拖拽的方式进行复制或者另外一种方法。如果不是那种一定要在所有的代码执行之前要执行的话,我们会在我们的额外课 方法当中去获得这个变量的负值方法就是比如说我们可以把它改成 private, private 和 public 的意思是一个是公开的,一个是私有的, 那么被标记为 private 这个关键词的话,那么就代表当前类型的这个变量只能在我这个类型,也就是 player controller 里边进行访问和使用,我没有办法在另外一个代码当中进行调用, 而被标记为 public 类型的这样的变量的话,那除了可以在 inspect 窗口当中看到以外,也可以通过其他代码进行访问和编辑, 给大家留意这一点。那如果我标记为 private, 我保存代码之后返回到 unit, 我就没有办法在这个 inspect 的窗口当中看到这个变量了。那我怎么来获得这个负值呢?我们可以在下边来获得我们的这个变量,就 可以等于 get component。 我们在 inspect 窗口当中添加 component 的时候,那个按钮叫做 add component, 那每一个组件都叫做 component, 我就可以来获得 component。 那在我自身上获得什么类型呢?用中括号把它括起来,我要获得一个 regbad to d 类型的这个组件,那通过这个命令,我们就成功拿到自身的 regbad 了。 然后我有了这个锐志八 d 之后,我就可以修改他的速度。刚才我们说了修改速度,那么 r b 打上点之后,我们就可以访问所有它里边包括的函数方法和变量参数。那我们要获得就是速度,我们可以在这里边看到速度。我们可以直接输入我老司机, 这个 vlog t 等于什么呢?我们可以把鼠标移过来,这是在我们的每一秒钟以固定的单位线性的执行更改它的速度, 所以我们来修改一下这个 velocity。 刚才我们在我们的 inspect 窗口当中还有这里面提示都提到了它是一个 vector two 二维的响亮,就是它 y 轴也有速度, x 轴也有速度,两个速度你都可以进行更改,所以我们要用一个新的速度来替换现在的速度。我们可以打上 new vector two x 轴的方向,我们现在主要的移动就是 x 轴的方向,我们既然有了输入的方向值,我们就用这个输入的方向值来乘以我们刚才编辑的这个速度,然后我们要再乘上一个我们时间的修订值。 可以看到我们打上括号之后呢,这个 vector two 里边的两个数值都是两个 flow 的值,一个是 x, 一个是 y, 所以 x 值的方向就是我们输入的方向,乘以速度,乘以这个时间的修正。为什么乘以这个时间的修正呢?这个时间的 修正可以帮助我们在不同的配置的电脑上面都获得相同的实验的效果,那这是一个常见的写法,大家记住它就可以了。具体这个 time 点掉在 time 里边表示什么?我们可以在什么情况下使用?大家可以查看一下代码手册,而且在稍后的内容当中,我们还会继续用到它, 到时候大家越来越了解这个内容了。好,接下来逗号 y 值,所以这个 y 轴数值是什么呢?可能有很多小伙伴觉得,哎,那既然我们是横向移动,那 y 轴我们给一个零是不是就可以了呢? 话是这么说,但是给零的话会有一些问题,一会我们会来看,那前面这个位置,我们 input direction, 它是一个 vector two 的值,我们要修改的是它的 x 值,我们打成点 x。 好,这样做就完成了,我们保存一下代码,先返一套 unity, 我们先试试来左右移动,保存一下你的项目,点击运行。 首先我们看到的第一个问题,人物降落的比以前慢了啊,非常非常的缓慢,对吗?这就是为什么 rgbd 后边的那个速度的 y 值不应该是零。好,他现在成功落地了。接下来我输入键盘上的 a 和 d, 可以看一下 inspect 窗口当中的这个变量的值。 哎,现在我就可以通过左右的移动来修改这个人物的移动的方向了。如果你觉得他的速度很慢,你可以在这里修改,比如说二百六十。 哎,我觉得这个二百六十不错,但是大家请留意,我之前也有提到过,你在运行模式下修改的变量数值,并不会实际更改它的变量,一旦我的项目停止之后,可以看到这个数值就还原了,所以我希望这个速度稍微跑得快一点, 我给他一个二百九十。 ok, 现在我们就成功实现了人物的左右移动。不过我们刚才看到了他降落的速度太慢了,我们要来修改一下,所以最后这个数值不应该是零,但应该是什么呢? 我们之前有留意过,在 unit 当中,二 d 的物理引擎歪轴的速度是负九点八一,也就是模拟的真实的重力,所以在这里边我们要让他维持他原有的那个重力。 所以在这里边我们可以输入什么呢?就是让它保持原来的 vlos t 点 y, 这样的话就可以保持它的重量不变了。好,保存代码。返回到应用题,我们再来测试一下。这次运行游戏之后呢,我用我的手柄来试试它的移动。 哎,现在降落的速度就可以了,然后我用手柄来移动一下也是完全没问题的。不过我缓慢移动我的手柄的左侧的操纵杆的话,我们留意一下可以看, 那他的速度非常慢,对吗?因为这个 x 的数值并不是直接变成负一,他是变成一个小数,如果拉到头的话,他就会接近于负一和正一之间了。 所以可以留意到,在新的输入系统当中,我们手柄的输入和键盘的输入是有一些差别的,那这一点大家请留意,我们也可以根据这个特性来调整。我们的项目的设计 好了,那左右的移动我们实现了。那接下来如何翻转我们的人物呢?看起来现在向左走的话,简直就是迈克尔杰克逊的月光步,他,他没有翻转他的人物。在 uni 当中翻转有几种做法。首先最简单的一个方法,我们可以通过修改 transform 当中的这个 skill 的数值, 这个 school 的是三维项量,都是围绕的对应的轴来进行比例的缩放。比如说我调整 x 的数值,把它缩小,可以看到人物就扁了,因为它的矮, x 轴的比例小了,宽了,他就变成胖了,因为数值变大了。那怎么样才能翻转呢?当他小到小于零了,他就会向另外一个方向调整了,所以我们只要把它从一改成负一,那么这个人物就翻转了, 这是一个比较普遍的做法,但是如果是零的话,哎,我们可以看到这个任务就没了,因为他的 x 轴的比例没有了。那另外一种做法,我们可以来看一下 spread render 的这个组件,在 spread render 这个组件当中直接提供给我们一个非常方便的变量,就是 flip 福利,就是翻转的意思,我们可以沿着 x 轴和 y 轴来进行翻转,只要勾选这个选项,人物就翻转了。在 y 轴翻转的时候,我们留意到它是以脚底的中心点翻转的,原因就是因为在我们的人物切割图片的时候, 他的 pivot 锚点位置设置的是脚底中心,所以我们沿着歪轴旋转的时候,他就是按脚下来进行翻转的。那两种方法都可以。那在我们这个项目当中呢,我们使用比较传统的修改 transform 的 skill 的这个 x 的数值,让整个人物物体都进行翻转, 那我们怎么来修改呢?我们就可以获得 transform 的这个组件。那 transform 呢?作为每一个 game object 默认的组件,例如我在我的 support scenes 当中创建一个空的物体,他默认就会有 transform 的这个组件,所以他是一定会有的。我们不需要 get component, 我们可以直接拿来用。那怎么操作呢?我们一起来写一下, 我们去到我们的目符的这个函数,我们除了人物的左右移动之外,我们也想不断的更新,按照我们移动的方向来进行翻转。那接下来我们来写一下,我在 这里写上一个注解,打上双斜杠的话,我们可以添加一些注视,如果你是刚刚开始学习游戏题的话,鼓励你多多写一些注视,每一行代码都可以标记一些注视,方便你以后再回来看这行命令到底是什么意思。 接下来这个部分是跟人物翻转有关,那我要修改它的 skill, 那我们要用到的是 transform 的组件,我们输入 transform 之后,我们可以留意到有一个小写的,有一个大写的, 大写的是类型,小写的是变量,前面有个扳手,而且这里提到了他就是当前的 component 上面的那个 transform, 这就是我们要的。下边也写明了这个是已经挂载到 game update 上面的 transform, 所以我们就用小写的这个。 然后我们要修改的是他的 skill, 所以我们在这里边直接输入 skill, 可以看到我们可以修改的就是他的 local skill, 就是当前的 skill。 那它等于什么呢? local skill 是什么?数值?鼠标移过来,它是一个 vector three 的三维变量,所以有 x, y 和 z, 所以我们重新给它复制 new victor 三。那他应该是什么呢?向左的时候他应该是负一,向右的时候他应该是正一。那我怎么知道他向左还是向右呢?我们可以通过我们的 input direction。 不过我们有一个问题,刚才我提到了你键盘输入的时候,他确实是负一和正一,但是如果一旦你用手柄操作的话,那么这个 x 的数值很可能是个小数,但是至少他会有小于零和大于零的两种情况。 所以接下来我们可以用另外一种方法来确定我们下我们的人物的翻转方向。我们可以在这里创建一个临时变量,用来记录我真实的方向啊,起名就叫做 face direction, 我缩写了就是人物的面朝的方向。他等于什么呢?默认的情况下,他应该等于我们呢? transform the local skill the x, 然后我们可以发现,诶,现在有一个问题,我创建的是一个整数的一个数值,可是它下面出现了红色浪线,它提示我了,你不能把一个 flow 的值变成一个整数值,因为 transform 的 local skill 的 x 是可以由小数出现的。 那为什么我在这里用 int 就是方便我们以后用的时候会出错,我先把它强制变成一个整数了。那在这里顺便给大家讲一下,我们如何在这两种数字之间进行转换。数据类型之间进行转换,我们可以强制把 float 后边的小数全省略掉,方法就是把它强制改为 int 的类型, 这种写法叫做 cast, 也就是强制转换。我们把一个 flow 的类型强制转换成 int 类型好了,那他有了一个初始值,他初始值 就是一,所以我们可以在这里写上,等你变成负一的时候,我就在这里写负一。那管你是什么,我至少有了这个变量, y 和 z 都是一,这个我们能确定 好了,那他什么时候变化呢?也就是说,当我的上面的这个输入的数值的 x 值小于零,那他就改成负一大于零,那他就是正一,对吗?所以我们来简单写一下,我们来写一个判断语句, if, 判断一下,如果 input direction 的 x 值一旦它大于零,那么 face direction 就等于一。反之,如果 input direction 点 x 小于零,那么 face 的方向就等于负一。 在这里我的 if 的条件语句下边没有用大刻块括起来,原因就是因为如果 if 的判断语句下边只有一行命令的话, 我们就可以省略这个大括号。好了,这样我们就写好了,我们既判断了输入的方向乘以速度给到我们的人物以外,我们也判断了通过输入的方向来更改我的 transform 的 local skill, 让这个 local skill 时刻等于我们对应的移动方向来实现人物的翻转。 好的,保存代码返回到应用题,我们来测试一下,点击运行好,现在我们的人物就可以成功的进行翻转了。在这里再次提醒大家, 我们在什么情况下可以使用 local skill 的修改方法呢?首先第一点就是要确定我们的人物的图片,我再次给大家看一下这个图片, 他的锚点的位置决定他的翻转,还记得吗?我刚才 flip y 的时候,他也以脚底位置进行翻转了,所以这个位置也决定了我们人物的中心轴的翻转方向。 如果一旦这个值的位置是在这,那么他就以这个纵坐标的这个位置来进行人物的翻转了,那么你用 local scale 的话,就没有办法实现原地翻转,而是要以这个轴歪轴为方向来进行翻转了,所以这样的情况下我们不能用 local scale。 还有一个情况,我先返回,如果你的人物放在场景当中,你的本身的 local scale 不是一,比如说我希望人物大一点,我把它改成二,如果你一旦你修改了图片的比例的话,那要记得你也要在代码当中相应来进行修改,所以这个位置就不是一了,就应该是二,这两个位置也都是二了。 所以大家在用这个 local skill 的时候一定要明白我们为什么用 local skill, 还有它更改的是什么数值,好,这里面我改回去是一好的,这样我们就成功实现了我们通过修改人物的 local skill 来进行翻转,也是 实现了输入键盘和我们的手柄来实现人物的移动了。那么怎么样使用我们的 sprite 的这个组件呢?我们就可以通过 sprite render 点 flip x, 让它等于处就代表勾选了 y 轴,等于处就是 y 轴的翻转了。好,感兴趣的小伙伴可以自己动手来试一试你怎样获得 spider 软件组件,就像获得瑞士八的一样,然后获得点儿福利普 x 就可以实现这个效果了。 ok, 这就是这个视频的所有的内容了,自己动手做一下,也调整一下这里边的速度,找到一个你喜欢的数值,然后实现一下人物的基本的翻转。别忘记你喜欢的函数一定要放在 fix update 当中去执行,不然的话他没有办法执行,没有人调用他, 所以 update fix update 包括 on disable, on enable 这些都叫做代码周期性函数,所以周期性的开始和关闭,周期性的每 真执行和周期性的固定执行,所以只有在这里边执行的内容才会持续不断,在你游戏的过程当中都会执行的函数方法。好了,那这就是这个视频的所有的内容了,赶紧做好这些,下个视频我们来实现其他的人物功能,我们下个视频再见吧,拜拜。


今天呢,我们会利用十分钟的时间来制作下面这个二维卷轴游戏场景。我们会使用 unt 游戏引擎和一个叫做 twelve game kit 的开发包。如果大家计算机上还没有安装 unt 游戏引擎的话,大家可以按照我的步骤来完成安装。 首先,我们需要安装一个叫做 u t hop 的东西, u t hop 可以看作是 u t 引擎的启动器, 他是用的团队最近分离出来的一个功能,用来管理计算机上不同版本的应用体引擎以及用体项目。当然,你可以选择不安装用体啊,直接下载用体引擎的离线安装包。 不过因为我经常会在应用题的多个版本之间做切换,并且安装下载都是一键自动化的,使用它确实也帮我节省了不少的时间。应用题还不安装非常简单,大家可以直接从官网上下载安装。我将下载地址 粘贴在屏幕的下方。安装完毕后,桌面上会多出来一个 untip 的图标,我们双击启动它,并点击窗口左边的安装按钮。正如屏幕上提示,因为计算机上还没安装任何 untip 的版本,我们可以点击右上方添加按钮,并选择最上方的最新版本。 你们看到的版本可能跟我的有所不同, ut 每个月都会发布一个新版本,版本之间的区别很小,通常只是 bug 的修复和一些小功能加入。接下来,我们点击右下方的下一步按钮,屏幕上会要求你勾选需要安装的组件。在这里我们一个都不用勾选, 因为对于游戏的开发和学习来说,安装应用体引擎的主体就够用了。最后我们点击右下方的完成按钮,这时计算机会自动下载并安装应用体引擎。整个安装过程差不多五到十分钟,具体的时间呢, 取决于你电脑的配置。大家可以将安装界面最小化,喝咖啡、看视频等 unt 安装完毕后再回来。 ut 安装完毕后,不同版本的 ut 引擎会以卡片形式显示在窗口中。这时候我们可以点击项目按钮,并点击右上方的新建按钮。创建一个项目。 项目又常常称之为工程 project, 它是所有美术资源场景代码保存的地方,我们可以看作是游戏的源代码。在新弹出窗口中,我们选择 to d, 因为我们要制作游戏是一个二维卷轴游戏应用题,同时支持二维和三维游戏的开发。在这里我们只是告诉应用题,将我们可能用到的所有工具都提前准备好,方便我们的使用。接下来,我们将右边的项目名称改为 my to the game, 当然你可以改为自己喜欢 更有意义的名称。最后点击蓝色的创建按钮,新建我们的工程运体会进行短暂的配置。最后打开运体游戏引擎的主界面,这个界面又称之为编辑器艾特,因为所有场景美术资源的编辑,游戏中的各种选项都需要在这里完成。 我们知道 ut 自身提供了许多游戏开发的必要功能,但是让 ut 更加强大的原因是, ut 有着非常活跃的社区游戏开发者爱好者会在一个叫做 sdoor 的商店中上传各种游戏资源、脚本以及扩展包。 ssdoor 上的许多资源是付费的, 但也少不了许多免费的优质资源。在这里,我们需要使用一个叫做 tv game kit, 它是云体官方提供的专门用于制作二维游戏的开发方。它大大简化了 游戏的开发流程,非常适合于新手入门和学习。我们可以在这里点击 sdoor 的选项卡,并在搜索框中输入 to the game kit, 并选择搜索出来的第一个结果,然后点击蓝色的下载按钮,如果你还没有登录音乐体引擎的话,音乐体会在这里弹出登录框。 我强烈建议大家自己注册一个 ut 账号, ut 对个人的学习和开发是免费的,使用账号也可以访问出商店之外的其他功能,比如团队协作等等。下载完毕后,我们可以点击蓝色的导入按钮,将这个开发包加入我们的工程。 屏幕上会提示导入操作可能会覆盖原有的工程设置,因为我们是新创建的空工程,因此我们可以直接忽略这个警告。在星探处窗口中会列出开发包中的所有文件, 我们继续点击下方的导入按钮即可。开发包导入完毕后,在这里会多出来一个 to the gamecat 的目录。屏幕下方这个窗口会显示工程中的所有文件,这包括你创建的场景、图片、思维模型以及脚本代码。我们可以把它理解为一个文件浏览器即可。 另外,屏幕上放菜单栏中会多出来一个按钮, kittos, 与这个插件相关的功能都可以在这里访问。 我们首先点击这个菜单,并选择创建一个新场景。场景名称我们暂时不需要修改,直接点击创建即可。这时候音乐体会我们创建一个默认的场景,或者我们叫他关卡。 这里包含一个人物角色和一个简陋的地图。我们来介绍一下屏幕中间的两个窗口。左边画有网格的是一个用来编辑场景的窗 口,我们可以在这里选择场景中的物体,移动他们的位置等等。右边是游戏预览窗口,也就是游戏运行时将要在屏幕中显示的内容。可以看到应用题默认为我们选择了十六比九的长宽比。我们暂时不需要去修改它, 因为大多数手机和计算机的屏幕常关闭都是这个数字。我们可以点击屏幕上方三角形按钮运行 to the game kit 为我们创建的默认场景。 我们可以通过 ad 键作为移动, s 键下蹲空格键,跳跃, k 键进站攻击, o 键子弹攻击,这些都是 to the game kid 为我们准备好的,在视频下方官方文档中也有详细说明。 接下来我们来对这个简单的观察做一些修改。如果在屏幕的右方你没有看到一个叫做 tall palet 的窗口,可以点击菜单栏中的窗口, 然后选择 to the tail。 palette。 tail 在用中是瓷砖的意思,用在二维游戏的地图制作中。大家常常将场景划分成一个个小网格,然后利用一种铺瓷砖的方法来创建地图。这种方法的优点自然是速度快,方便。 另外,这功能是应用题自建的,并不是 to the game kit 这开发包提供的。因此即使我们没有使用其他任何开发包,也可以使用这个功能。叉 opat 窗口打开后,我们发现他默认我们显示两个砖块, 一个是光秃秃泥土,一个是绿色草坪。我们随便选择一个砖块,并在左边场景编辑窗口中按自己的喜好铺上砖块。砖块会自动和背景的网格线对齐,并且砖块之间会自动连接。我们甚至可以创建不同高度的 平台。砖块之间呢,并不会产生任何缝隙,因为这个砖块资源是 to the game kid 事先设计好的,设计人员已经事先考虑到这一点。随后我们可以点击运行按钮,测试刚我们创建的地图。 接下来我们在游戏中加入怪物角色,继续丰富我们的游戏逻辑。这时候我们首先要利用屏幕下方的 project 窗口,也就是我们之前提到的运题自建的文件管理器, 我们需要通过它找到怪物的资源。首先我们打开 to the game kit, 然后选择 prefabs。 prefab 这个词在 unity 中经常会看到,它的中文意思是预设,通常指是那些已经为你创建好的,已经有一定功能的可以直接使用的 东西,比如怪物,人物角色、场景、用户界面中的按钮等等。总之你可以直接拿来使用就对了。在 prefab 的目录下有一个叫做 enemy 的目录, 我们打开它,看到这里有两个怪物, trumper 和 speeder。 在应用题中的很多资源,我们可以通过字面意思来猜测它有什么功能。 trumper, 咀嚼者,听起来就是要吃人的怪物。 speeder, 吐口水的怪物。好吧,听起来这两个怪物区别像是,第一个怪物进展攻击, 第二个怪物远程吐口水攻击这里我们直接拖拽第一个怪物到左边的场景编辑窗口。我们点击屏幕上方三角形按钮,测试一下我们修改后场景。当我们靠近怪物时,怪物会向你攻击,屏幕左上方的小红心也会减少一格。 我们退出游戏模式,继续对怪物的属性进行一些调整。 unity 右方这个窗口, inspect 监视器会显示你选中物体的属性。比如我们可以在场景面器中用左键选择不同的物体, 可以看到这点内容也会随之改变。这里有个非常实用的技巧,通常在一个复杂场景内,不同的物体会重叠在一起,并且还有一些看不见的功能。物体,比如声音和一些后期处理的特效。 直接通过鼠标左键通常没有办法正确的选中。你想要选中物体,于是我们可以使用屏幕最左边的一个称作 hierarchy 的窗口。 hiverke 在英文中有着层次结构的意思,这窗口中会列出场景中存在所有物体,看见的,看不见的,甚至于屏幕之外的物体都会在这里显示出 出来。我们可以双击这里的 chomper, 选中并聚焦这个物体。右边的 inspect 中也会随之列举出这个物体的属性。可以看到这里显示的属性可以说是琳琅满目,异常复杂。 我们再仔细看这里,属性又可以被折叠成不同种类, transform, sprite, renderer, animator, box, clutter to the, rigid, body to the 等等等等。每一个分类都扮演着非常重要的角色, 比如 transform 代表这物体在场景中位置,我们甚至可以修改这里的数值来移动这个物体。 sprite trainer 是用来在屏幕上渲染或者显示这个物体用的。如果我们直接把这里的小勾勾去掉,这物体就会直接从屏幕上消失。另外,这里有每一个分类,在应用题中被称之为 component 部件, 我们甚至可以删掉或者加入新的 component。 现在我们只需要把目光聚焦在这个叫做 enemy behavior component 上就好了。敌人行为,从他名字上可以看出,这是一个用来设置怪物属性的部件。比如这里有一个 speed 的属性, 用来设置怪物移动的速度。我们可以拖拽这里来修改这个数字,或者直接用键盘将这个数字改为三。接下来我们点击运行按钮测试一下,可以看到怪物的移动速度确实提高了许多。 同时我们可以修改这里的 view field view 来修改怪物的可视区域。屏幕左方的绿色区域代表怪物能够侦测到范围,只有你出现在这区域中,怪物才会向你跑来并对你发动攻击。我们可以点击运行按钮测试一下我们 修改后逻辑。这时候如果我们站在怪物的身后,他是不会发现我们的,只有等怪物转身时,他才会向我们跑来并发动攻击。 在这期视频中呢,我没有使用任何一行代码就已经能够做出像模像样的二维卷轴游戏其实还有许多非常实用的功能,我们会在之后视频中向大家陆续介绍。

今日教程探索把二 d 素材的位移、旋转、缩放这三种效果只需要用到一个节点,那就是渐变。首先我们说一下位移,我们需要获取复制二 d 素材位置节点 数值渐变顶部属性选择二维向量将渐变持续执行,端口与位置相连,向量值与位置值相连。 在数值渐变从该处到结数值输入素材的开始和想要到达的位置 持续时间,根据想要的效果填写时间,同时也决定了速度的快慢。循环值为渐变循环的次数,选中乒乓即为循环。最后添加触发,看一下效果。二 d 素材的旋转,我们需要获取旋转的复制,旋转旋转为一个值,所以数值渐变顶部属性选择数值初始值为零,我们需要旋转多少度到结束值就输入多少。连接好输出端口,我们看一下效果 二 d 素材有一个中心点,我们可以清楚的看到他是围绕着中心点进行旋转,所以我们可以调整中心点的位置,改变旋转中心,实现不同的旋转方式。 三、二 d 素材的缩放,我们需要获取复制二 d 缩放节点,连接方式与上两个无异,快进一下直接看效果。

大家好,我是 michael。 这个视频我们就要来为我们的图片创建它的骨骼来进行一些绑定了。那么在使用这个功能之前,你 你已经准备好你的素材了吗?如果还没有,我在这个视频链接里为大家提供了我的人物的素材,但是你在使用这个人物素材之前,我有一些想要强调的。如果你使用了火火老师为我创建的这个人物的图片素材,那么请注意,这个图片素材不应该使用在任何的商业项目当中, 小伙伴们都能够尊重所有游戏图片素材的原作者。谢谢大家的配合,那么下载好了这个素材之后,我们就可以将它导入到我们的项目了。 另外在我们这个 to d animation 的学习当中,我们不光可以使用 p s b 的文件,也可以使用 p n g 的文件。那么 p s b 的文件之前我已经说过了,它是分图层,已经为我们创建好了。那么另外一种就是 p n g 的 单张图片。那么在使用单张图片的时候,请小伙伴们留意,你要使用像我现在画面当中这样的所有的身体的各个部分独立分开的 png 图片,那么也是可以使用这个 to the animation 的。 另外还有一点就是在你查看 package manage 当中,然后你选择 to the animation, 这里边它是有一个样例的。 照片中请留意这里有一个 samples, 所以你可以将这个 sample project 导入进来。这里边也有大概四个图片的素材可以使用,也包括一个图片的 sprite 切换,也就是我们的换装系统。 感兴趣的小伙伴们可以将它导入来使用也可以。另外你也可以在这里边查看你的 documentation, 这里边有详细的 to the invision 如何来使用和操作的指南。好了,准备好这一切之后,下载好你的图片,将你的图片人物素材拖拽放到我们的项目当中。拖拽进来之后,我们可以 可以看到他是将我们的这个图层独立分开的。接下来我们在使用之前将我们的图片做一些简单的设置。首先当你的图片导入进来的时候,要确保他的 sprite mode 一定是 multiple, 如果他不是 multiple, 要一定选择是多个图片的组成。 然后在下面也有一些选项,这里面的选项包括是不是使用人物已经绑定的骨骼,是不是使用 layer grouping。 这个 layer grouping 的意思就是如 如果你在 photoshop 将一些图层合并成组的话,那么在这里边也会对应显示为成组。还有下一个就是它的锚点,你选择是底点或者是中间都可以,可以根据你自己的项目来调整。那么接下来我们选择 spread editor 进入我们的 spread 编辑。 如果你已经安装好了 to the animation, 接下来我们在左上角的下拉菜单中就可以选择 skinning editor, 也就是说我们 的皮肤和骨骼的绑定。选择以后,我们的图片会自动帮我们重组成你从 photoshop 里边导出来的人物的模型的样子。这就是 psb 文件的好处。如果你使用其他类型的文件的话,那么它不会产生这样的效果。但是同时你也可以在我们的窗口上边查看它以 spreadsheet 的形式, 心灵图集的方式显示的样子也方便我们来区分各个部分受骨骼所影响的情况,那么稍后我们也会来演示这个怎么来用。还有在这里想强调一点是小伙伴们可能看到这里面有很多的英文 人像,但是不好意思的告诉大家,就算你把 unit 切换到中文模式,那么在这个菜单中他仍然是英文显示的,所以请现在就开始努力尝试使用英文的界面吧。小伙伴们。然后在我们的窗口的右侧有一个 visibility, 也就是说我们的可视化的项目,所以在这里面我们可以可视化 我们的骨骼以及我们的 spread。 如果我不希望显示我的头发,我可以在这里边直接将我的头发关闭,这样的话我的头发就没有了,以及或者我们不选择我们的武器都可以,所以这方面我们在后边可以进行详细的仔细的骨骼的调整。还有在这里面有个选项叫做 caligram, 是一个分类,所以我可以在这里面创建属于我的分类,也可以把同类的物品来合并成一个分类,这是跟我们的图片换装有关的,但是我不建议大家在这里面使用,为什么呢?稍后的视频会为大家来解释。 先了解这里面的情况,一个是骨骼,一个是 sprite, 接下来我们就要来创建我们的骨骼了,在左侧第一个部分就是我们的骨骼,第二个就是 geometry, 也就是我们的多边形蒙皮,然后我们会在上面设置顶点来构建他的每个部分的影响的范围。最下面这个部分就是刷他的权重,什么叫权 权重呢?就是这个部分受哪些骨骼的影响,影响有多大?这一个一个我们会来操作一下。那么为了能够详细的调整我的骨骼,我首先先将我的武器隐藏起来,接下来我选择创建骨骼, create boom。 然后接下来我的鼠标会变成一个红点。 如果你使用的是一个 png 的分散图片的话,你想创建骨骼要先双击选中你想要编辑的那个范围,然后才可以绘画骨骼。 在这里我就不演示 png 的形式了,所以接下来我们来一起来画一下。首先点击你的鼠标,通常我们的人物会有一个主体的躯干,也就是你的第一个骨骼会影响整个人物的翻转角度,所以通常是以他的中心点为止,所以我来画他的中心点, 然后我的身体每次点击会创建一个新的骨骼。好,然后接下来我不需要在这个顶点继续来创建其他的骨骼。 之后你可以按下键盘的 exc 键,接下来你的骨骼就自由了。然后接下来我要创建的是他的手臂以及他的下肢。在创建他在下肢的时候,小伙伴们请留意,我要将我的下肢的影响跟我的主体的第一个红色的这个骨骼连接起来,那么我就要先选择这个红色的骨骼。 接下来你会看见他被一个虚线所连接上了,这就代表接下来你绘画的骨骼将与这个骨骼连接在一起,相互影响。所以我们来接下来画这个腿部的骨骼。 同样的方法,如果我们会画这个身体的话,我们可以点击身体我们的躯干的骨骼,然后来画他的肩膀以及手臂。在这里由于左臂的话我们会持过武器,所以我选择用三段骨骼来调整他的手臂的位置,而右侧我不需要,我就只会画两个骨骼。 好,我们整体的身体的部分已经结束了,那接下来我要考虑的就是我的头发了,所以我希望我的头发在移动的过程中也会有一些动态的效果,这样的话会看起来特别的活泼以及逼真。所以头发所影响的部分是应该跟这个绿色的骨骼作为他的躯干骨骼。那我点击这个绿色之后,接下来我来绘画我的头发, 以每一个发梢发尖作为一个骨骼的顶点来绘画。 好,现在我就创建好了我这个骨骼了,可是现在我一直还是有这个点。小伙伴们可以选择 preview pose 来查看,然后关闭我们的骨骼编辑。 现在我们已经画好我的骨骼了,所以如果我挪动的话,你会看到整个上半身的骨骼会跟着动,可是我的人物并没有跟着动,原因就是因为我们还没有对骨骼进行只要么吹,也就是将它进行网格化,只有网格化之后 他才会受到这些骨骼的影响。所以接下来我们来用 j m 垂直部分的工具,那么在 j m 垂直里面,小伙伴们请留意,你可以单独的去创建他的顶点以及他的边缘。但是如果我们一个一个画的话会非常浪费时间,但是这样的方法有的时候在非常精细的动画里面 做的非常的生动。在这里我们只是使用 auto geometry 将它自动为我们绘画来生成这些顶点以及边缘点。点击之后,你的右右下角的这个菜单当中会出现一些选项,在这里有一个 outline details, 就是你的外围点的详细的细节,这个细节越多,他的顶点就越多,小伙伴们可以根据自己的需要来进行调整这里的数值,所以默认的情况下可能是十或者二十。下面还有个选项就叫做 wait, 也就是刚才我们所说的权重,他会为我们自动分配每一个网格,每一个图片所受到 影响的骨骼的权重,我们就将它勾选,然后选择 generate for all visible, 也是将我们所有可视化的部分都将它自动生成。我们选择这个按键, 接下来我们可以看到我们现在的人物就被刷上了颜色了,而且现在如果我移动的话,他就可以跟着来移动了。但是有些部分我们需要来调整,比如说当我的胳膊扭动的时候,你会发现他也影响了我们的身躯, 这个不是我们想要的。所以接下来我们来会用一些左侧的工具来调整一下这里面的一些选项。那么在这里我来介绍给大家我的一个常用的用法。 因为我们的游戏图片是一个卡通的图片,是好像一个纸片人一样,所以我希望每一个部分直接受单个的骨骼影响,而不需要其他的骨骼有这种连带的影响。当然如果你的图片是仿真型的话,你可能会需要这样的方法,所以在这里 我举个例子,我们先选中我们的身体,看到我的身体现在受一二三四五个骨骼的影响,六七,甚至有更多的部分的影响,那我希望我的骨骼只受到红色的和黄色的两个骨骼的影响,将其他的骨骼影响山去。 我们可以使用权重的方法将它刷掉,但是我们要调整的是它受到的骨骼的影响的个数,所以我们可以选择左侧的 boom influence 就是它的骨骼影响。选中它之后,我们可以看到第一个骨骼就是我们的红色, 第二个骨骼就是黄色的,那么其他的这些影响他的骨骼我都不需要,我可以将他们都选中,然后点击减号将他们移除,这样的话我的身体就只受这两个骨骼的影响了。 我们用同样的方法可以将其他的骨骼影响都删掉,所以在这里我们就可以用之前我们的 spreadsheet 精灵图集的方式来调整了。我们可以在这里边双击每一个图集,然后看看 它受影响的范围。比如说在这个头部,我不希望这个头部受到头发的这个影响来调整我们的脸部了,所以我可以直接将其他的部分全删除,所以第三个骨骼是我想要的,其他的骨骼我都不要了。那小伙伴可以用这样的方法来快速的调整你的所有的骨骼,在这里请留意这个左侧的这个手臂这个位置, 我是希望这个手臂会受他们两个的连带影响,因为我希望手腕有细微的变化,那么我就可以保留他们两个的骨骼。但是我不希望有第三个骨骼的影响,那我只需要将第三个骨骼删掉就可以了。这小伙伴们可以自己动手,现在就来规划一下你的骨骼,我也会快速来完成这个部分的内容。 好的,那么接下来我们要做的一个重要的事情就是调整我们的这个头发的这个骨骼了。这个头发的骨骼比较特殊一些, 在这里我们可以看到当我的发根移动的时候,我的头发会有一个部分被影响到了,其实我希望整个头发是受这条绿色的跟头干一样的骨骼的影响,所以这个左侧的部分我们需要用我们的权重刷来将它刷到受这个绿色的骨骼的影响。 这里我们可以选择左侧的 weight brush 来调整它。点下了这个选项之后,我的鼠标变成了一个大圆圈,所以可能屏幕上看不太清,在左侧可以调整它的尺寸,然后以及它的硬度,所以我们保留下边的两个部分不选,然后我们可以通过 size 来调整一下它的范围,比如说二十, 然后接下来你要选中,你要现在刷上权重的这个骨骼,所以我选择绿色的这个骨骼。接下来我来点击这些点,这些蓝色的点就是刚才我们用 auto geometry 来创建的这些顶点,所以我点击这些顶点可以将我的绿色的 权重全都刷到上面,所以发现我点按了滑动了半天,他影响的范围非常小,因为我们的颜色刷上去的强度比较低,所以接下来我可以调整我的哈德尼斯,就是我的强度,比如说我把它改成十,然后我们再来刷一下, 可以看到他有很明显的变化,受到我这绿色骨骼的影响,他回归到了之前他应该在的这个位置,所以我们可以用这个方法将不应该受影响的这些顶点全都刷成我应该有的颜色,也就是我的绿色。 好,刷好了以后,我们可以再来调整一下黄色头发,看到我现在左侧就不受到影响了,对吗?好了,小伙伴们可以不断来调整这里面的参数,然后将我们的权重的颜色刷上去,以确保他的动画是没有问题的。接下来我会逐一调整这些头发上的骨骼所影响的范围,小伙伴们也可以自行来调整一下。那么在 调整之前还有个要留意的就是我这个图片绘画的时候,有些部分在 photoshop 中没有进行擦除,所以它会自动为我创建出这些顶点,那么我们就可以用编辑顶点的方式来进行调整,所以我们选择 added geometry, 然后可以选择这个点, 然后按一下删除键,将这些没有用的顶点删除,同时你也可以拖拽调整这些顶点的范围,调整他的位置。好,接下来我来调整一下这个骨骼的权重的影响,所以我选择 witprous。 接下来我们来调整每一个影响,小伙伴们也可以动手来做一下。 好的小伙伴们,我简单调整一下,当你调整好了以后,你可以选择左上角的 reset pose 来还原它之 前的造型,然后你继续来调整一下每个骨骼,然后看看他影响的范围。有没有一些很奇怪的这项目。在这里留意到在这两个顶点之间中间没有任何的顶点了,所以有的时候这样的话我们不容易来详细构造我们里边的这些每一个部分的影响, 所以我们在一开始创建的 auto geometry 的时候,我们可以将它的顶点数量进行适当的增加,或者你可以在这里边去创建顶点,选择 create or text, 然后在这里面来创建新的顶点,这样的话我就可以详细的规划里面的每一个部分所影响的范围了。这小伙伴们根据各种各样的方法都可以好,这样的话我们基本上就做好了我们这个骨骼了, 现在我们来调整一下试一试。我们选择 preview post, 然后我们挪动一下每一个骨骼,看看他们之间的影响啊,是不是我们想要的效果?可以看到左臂这个位置稍微调整的时候有点夸张,所以我们可以来调 调整一下这部分的权重。 好的小伙伴们,这就是如何来创建我们的骨骼,现在我们的骨骼就已经做好了,怎么样,你学会了吗?那在这里边我们还有一个事情是忘做了,就是我们的武器,所以我选择我们的 weapon 把它启动起来, 这时候我们双击我们的 vip 呢,会选择这个图片,我们为他来创建一个骨骼,点击创建骨骼,接下来我希望我的这个武器是受我的这个手臂的影响的,所以我要选中这个 手臂的这个骨骼,然后在他的顶点的位置进行点按,接下来他就可以从顶点的位置进行创建了,所以我们来创建一个从顶点开始的这个骨骼。 好,创建好了骨骼是干什么呢?我们要为它创建 geometry, 也就是它的顶点,我们选择 auto geometry, 点击创建,这时候可以看到他受到了多个骨骼的影响,然后怎么办呢?我们去到精灵图集选中他,然后选择 boom influence, 然后将他所有其他没有用的骨骼都删掉,不受他们的影响。 好,我们来调整一下试试看一看,好,现在他不受他们的影响了,对吧?好了,都做好了所有的这些骨骼之后,千万别忘记点击右上角的 oplay 进行保存, 保存好了以后,我们这个图片的骨骼就已经做好了,我们就可以将它关闭了,然后我们可以将它拖拽放到我们的 harake 的窗口里,这个时候他就已经出现了,他现在是以底点为他的中心锚点,所以他的位置比较靠上,我们可以调整将他挪到下面来。 接下来你双击这个人物的时候,打开他的下面的项目,你可以看到这里边有一个分类叫做 boom, 这里面就是他的所有的骨骼。如果你的画面中看不 到骨骼的话,请留意要在新的窗口里打开 dismo, 这样的话你就可以看见这个人物的骨骼了。接下来你可以再挪这个新的窗口里,挪动这些骨骼,也可以调整他的位置了。好了,小伙伴们,这就是如何绘制人物的骨骼,你已经学会了吗?赶紧做起来吧, 别忘记为我点赞和转发这个视频哦,谢谢大家的支持,那我们下个视频再见吧,拜拜。

接下来为人物添加枪械,检查下模型的材质有没有问题,然后再场景新建空物体,将枪械放到其下面作为子物体。这把枪太大了。这种情况 我们一般不直接对游戏场景中对象进行缩放,而是在导入设置中改变其缩放值。我们先对其缩放到合适大小, 记住缩放值, 然后在模型的 inspector 窗口下找到 model, 改变 scale factor, 点击 apply, 然后将场景中对象的缩放值改回一。 接下来需要找到人物手腕骨骼,将副对象的原点放到枪的握把处。 我这方法比较笨, 调整好后在手腕骨骼下兴建空物体, 将枪放到其下面。 调整枪位置可以改变手部 iql 的权重,或者使用 unitaric 插件来使枪和人物动画更契合。这里我就简单调整一下,效果还行, 然后加上物理效果。新建平面作为地面, 添加钢铁组件和碰撞组件,设置为静态钢铁。 然后为人物也添加钢体组件和胶囊碰撞体组件。调整碰撞体的位置和大小,使其刚好包裹住人物。 运行游戏人物可以正常进行移动, 这里记得要锁定所有轴向。 接下来制作镜头跟随效果。我们使用 unity 提供的 cinematic 插件,这是一个简便但是功能强大的镜头效果插件。我们导入该插件, 这个地面太亮了。调暗点 我们可以看到导航栏多出 sinomak 印象。我们选择第一个,创建一个虚拟相机,并改个名字。 可以看到这里提醒我们需要跟随对象。我们把人物对象放入 follow 和 look at。 跟随方式我们选择 orbito transposer, 这种方式能让我们使用鼠标输入来转动镜头, 具体介绍可以查看官方手册。下面属性的作用在手册中也有详细解释。 sinomakin 不是本次课重点内容,改变各项参数,将镜头放到一个合适的角度, 重点是添加 scenario machine put provide 的组建。 然后选择 player look 作为 xy 轴转向输入, c 一轴则不需要输入,因为我们只需要水平转动视角 运行游戏可以看到现在镜头能够根据鼠标移动而转向了, 不过现在是反的,这是因为 x 轴转向默认勾选了 invert, 我们取消勾选,现在转向就正常了。下面我调整了一些数值,这里属性数量太多, 时间有限,不能都为大家讲解,大家可以去官方手册上查询。链接放在附带文档中,大家镜头设置不必跟我一样,当然我也会把本次课中的镜头设置参数截图并放在文档中。 镜头设置好后,接下来要处理一个问题,那就是人物前后左右移动是相对于世界空间的,而并非是摄像机空间,这样的操作体验并不好,因此我们需要将角色转向转换到摄像机空间。先讲解一下原理, 我们希望角色按下 w 时朝着摄像机的前方移动,而按下地时朝着摄像机的右方向移动。右方向很简 简单就是摄像机的 x 轴, 可前向方向并不是单纯的摄像机 z 轴, 我们需要将 z 轴投影到水平面上,换句话说就是将 z 轴方向的外置归零,这样就能得到正确的前进方向。回到脚本中,我们找到角色转向的地方,注视掉之前的代码, 定义一个三维项链作为摄像机的前向方向。 我们使用 project on plane 方法可以获得项链。在目标平面上投影, 第一个参数是场景中主相机的前向方向, 第二个参数为目标平面的法项量,水平面的法项量正好竖直向上, 最后进行硅翼花,这样我们就得到了投影后的前向方向。 当然了,如前面说的,我们还可以把摄像机前向方向的外置归零,同样能达到目的。 然后我们重新设置 rotate 的值。 回到编辑器运行游戏,可以看到现在人物的移动是相当于相机的。


旋转工具里有二 d 旋转或三 d 旋转,我们先看一下二 d 旋转,是选取要旋转的物件,一条直线 按回车来完成。选取设置旋转的中心点, 然后这个复制有选项,先选择否这是中心点,然后设置那个距离角度或者第一参考点,我们先给它输入九十度,这样它就旋转九十度, 再重复执行一下曲线,旋转左右点,然后散动, 这样他就旋转了三十度。然后还有一个是先是旋转,我们把它摆正, 我们把这个图形啊,把它这块这个角度旋转到水平线上去, 因为这个标规规律它是三十度,有的时候可能啊,随便转个角度吧, 可能不一定多少度。 用另一种方式来把它转转,转到这个圆点的水平线上去,先把它移动到这点移动端点, 然后我们对他做旋转 走,先找旋转中心点是这块,然后这个第一方向点,我们选选它, 我们把这个点给他放到水平线上去,正脚开始,这样不就把他整个的都转过来了。 就是确定第一个方向点来做旋转, 比如说把它整个,把它做到这里面 中心点,这是第一方向点, 是指定参考点来旋转物件, 然后也可以在旋转过程中打开这个选项,复制等于十, 然后我们给他转个角度,复制三十度, 然后再算三十度, 这个复制多少。删掉一个 安装赛事 off 多条曲线, 然后看一下三 d 旋转。散电旋转的话,要是找一个立方体 右键点旋转图标,执行三 d 旋转是选取要旋转的物件 车,然后旋转轴起点,按着终点,然后可以指定一个角度, 然后可以再继续旋转, 要这种钻 就是三 d 旋转,一般来说啊,使用二 d 旋转比较比较直观,比如说我给他沿着这个方向转了九十度, 然后沿着他转九十度,然后在这个 里面再给他转一点角度, 这样也可以达到了反低旋转效果。然后或者说使用这个操作轴来做旋旋转,直接点这几个图标,这是三个方向, 呃,九十度,它的旋转中心位于这个物体的中心, 然后通过操作轴也可以达到快速旋转的操作。