Skip to content

1.EazyGoing 简单制作一个骨骼布料

OneYoungMean edited this page Jul 30, 2020 · 10 revisions

1-EazyGoing

1.简单的开始

如果你是第一次开始,别担心,我们已经在场景1准备好一份标准的头发案例,它叫做 Hair Test ,是由一堆坐标点构成(很抱歉我把贴图搞丢了),只要你运行场景就可以看到它.
抱歉,在游戏窗口中你可能看不到这些点,但是实际上它们已经在sence窗口中绘制好了(笑)


2.它是如何制作的

在下面的示例中,我将详细的讲解 Hair Test 的制作方式.
1.首先,你需要确定你目标的关键词,正如你所见的,图中的关键词是 hair

2.其次,在你的根物体上添加ADBruntimeController脚本,无需注意多余的控制框,你只需要把你的关键词 hair 填入识别关键词的列表当中即可

3.点击[生成节点数据],然后等待一下,脚本会自动在场景中绘制所有识别到的数据.

4.晃动你的目标!查看效果XD.

简单的节点生成


3.让我们来稍稍提高点难度...

为了更加详细讲解脚本是怎么运作的,我在旁边同时也准备了一个 skrit Test 的案例,他其实是某个裙子的所有坐标点,下面我将一步一步带你制作它.

1.在开始之前,我需要说明一些重要的讯息,及脚本是不知道你的目标是裙子还是头发的.
在制作之初,为了更加方便其他人进行效果的开发,我将运行脚本(ADBRuntimeController),效果设置文件(ADBSetting),以及 效果关联关键词文件(ADBGlobalSetting) 给分割成独立的三部分,它们的具体分工如下:

这么做的好处是你可以更方便的替换不同的效果,找到最心仪的那个,坏消息是,你可能需要花点时间来理解才行.

2.找到 skrit Test ,按照最开始的步骤进行操作,当我们填入 SkirtBone 按下[生成节点数据]的那一刻,脚本弹出了一个提示,告诉你"我不知道这个 SkirtBone 意味着什么".

3.这个时候,你就需要手动去设置ADBGlobalSetting文件,它在Controller面板的最上方,双击打开即可看到它存储的信息.
简单来说,它实际上是一个Dictionary<>格式,你可以在其中存储多个不同的ADBSetting的文件,而每一个ADBSetting文件可以对应多个不同的关键词.

4.你需要告诉脚本, SkirtBone 应该使用裙子的效果设置文件,恰好我们在下面有一个预制的裙子效果设定文件,我们将我们的 SkirtBone 填到下面.
如果你没有多余的格子可以用了,你可以增加上面的size的值来添加新格子.

5.回到操作界面,按下[生成节点数据],这时我们已经看到,原本光秃秃的裙子已经被识别出来,并按照ADBSetting文件进行设置.

6.运行,晃动你的目标!

更详细的步骤


4.最后的一步,添加你心仪的碰撞体!

距离我们大功告成只剩一步之遥了!接下来你将要学习怎么制作ADB的碰撞体.
为了优化起见,我们并没有采用unity原始的碰撞体,你需要稍微花点时间学习一下怎么使用ADB原生的碰撞体,不过放心,大部分时间你都不会直接创建他们.

1.开始之前,你需要知道,脚本会自动搜索根目录下所有ADB的碰撞体(ADBEditorCollider)的脚本,同时它还会读取被标记的碰撞体.我们先来说第一种方式.

2.首先,在你的目标下面,新建一个子物体(注意是子物体哦!).在上面附加一个ADBColliderEditor脚本.

3.这个脚本有很多参数,同样的,大部分时候你都不会直接去修改他们.为了方便起见,这里我们只采用默认的球体,并将其半径设置为0.5.
为了避免卡住,我将其稍微向下移了一点.

4.大功告成,现在你有了一个可以被识别的球体了!

5.接下来说第二种,这里需要额外说明一下,为了性能起见,通常脚本并不会访问非子物体下的碰撞体脚本,这意味着你的碰撞体对于另一个ADB脚本可能失灵,如果你需要所有脚本都能访问它,那么你需要把它标记一下.

6.为了方便起见,我们已经偷偷预制了一个碰撞体,就是最上面那个XD.

6.打开它,然后将它标记为全局碰撞体,现在所有的ADBRuntime脚本都能够识别他们了!

7.运行,然后,晃它! 这里我出了一点直播事故,我忘记勾选对撞模式了,我会在之后提到他们,抱歉XD