【uni2d】从零开始的动态立绘制作教程2

 

该教程由水螅制作,未经允许请勿转载

 

于是接下来说怎么做动画……

选中整个角色最上边的根obj,对上个教程里的范例来说,就是sprite_lian_body。在下边的窗口页中切换到animation窗口。点击小红点开始录制的话,他就会弹框提示你输入新动画的名字。随便起一个,我这里的名字是lian_a1。

小红点后边的按钮们都长得很直观我就不赘述了,比较重要的是倒数第二个add keyframe和倒数第一个addevent。如果用过其他动画制作软件应该会对于add keyframe很熟悉(对整个这个界面也会觉得很亲切……),如果觉得不亲切不熟悉……………………我也不知道该怎么解释这个orz……请先去自学关键帧和补间动画的相关概念………………

总之add keyframe就像他的名字一样点了它就会在你的红线在的那个时间给你插入一个关键帧……

addevent则是在红线的地方插入一个执行你选择的function的事件,当动画播放到那个时间就执行一次那个function……function是用脚本自己写的,这个教程里不会涉及这部分……

将红线放在任意一个时间,点上anim按钮,移动角色的任意一个骨骼比如脖子,可以看到角色的动作变化了(在红点被按下的录制状态下,你对小哥做的一切都只会被记录在动画里,结束录制后就会恢复原状的不用担心……),点击add keyframe在这个时间生成关键帧,就会变成这样

 

点击播放按钮的话就能看见角色从正常慢慢变成歪脖子……

如果觉得关键帧的时间点不对可以在时间条里任意拖动它把它放到你觉得合适的时间。

就是这样……在anim开启的模式下,使用unity上边的移动,旋转,缩放按钮逐个调整你需要变动的骨骼……具体应该怎么做因为每张图不一样每个人想要做的动作不一样所以我就不细说了说了也没什么参考意义……总之就是个需要细心耐心的熟练活……多试一试就能明白自己想要的效果要怎么做出来,比如想要表现头的扭动就缩小一边放大另一边之类的……

<-出镜率超高的工具组按钮们

然后就做完了=_=

值得注意的地方是第一帧和最后一帧要一样这样循环播放起来就没问题了……

做完了第一个动画,关掉录制按钮小红点。点击小红点地下的动画名字选择create new clip再做第二个。做好之后回到project页面。

可以看到录制的lian_a1和lian_a2两个动作已经作为资源文件被放在了资源文件夹里。最右边还多出了一个和根obj同名的animator controller。如果你点击hierarchy里边的sprite_lian_body,右边的inspector里边显示出来的它的各种属性里已经被自动生成了一个animator的component。这里显示这个obj使用的就是和它同名叫做sprite_lian_body的这个animator controller。(如果你不喜欢它随时可以把它换掉,不过在熟悉操作前还是先用默认生成的它吧~)

在资源文件夹里双击这个animator controller,就会开启animator窗口,可以看到我们之前录制的动画lian_a1和lian_a2都已经被放在里边。你可以随意拉动它们摆放的位置虽然不管放在哪里都无所谓……

可以看到lian_a1是橘红色的默认状态,这说明它是默认开始播放的动作。

点击上边的播放按钮,可以看到game窗口里,小哥按照第一个动作动了起来。

(如果你只看到一片蓝没看到小哥,回到scene窗口,确保小哥被放在了摄像机前边……)

就是这个东西,点它一下的话右下角还能看到它的视野预览,移动它或者移动小哥到小哥出现在他的视野中间合适的位置就行了。

如果想要切换默认动作,可以在animator窗口里的lian_a2上右键选择set as default,就能看到lian_a2变成橘红色,点play按钮播放的话就会是按照lian_a2的动作动起来了。啊对了,如果动画只播放一次就停了没有循环的话,就在资源文件夹中选择动画文件,在它的inspector窗口里把loop time勾选上。反之如果不希望这个动画反复播放那就是把这个勾选去掉。

 

这时候问题就来了(喂),如果想要顺序播放lian_a1和lian_a2还希望他们无缝过渡怎么办…………

这个算是unity相对其他很多引擎来说方便了很多的地方……只要在lian_a1上右键选择make transition,然后把那根箭头连到lian_a2上就行了……

点击那根线的话,可以看到inspector窗口里出现关于过渡的详细设定

过渡时间和过渡插入点……拉到自己喜欢的位置就好。

如果想要循环播放lian_a1和lian_a2那就从lian_a2上再拉一根过渡线到lian_a1上即可……

现在点play按钮,game窗口里就能看到小哥从lian_a1到lian_a2再到lian_a1动个不停,animator窗口里也能看到lian_a1和lian_a2的进度条交替出现。

那么现在问题又来了……(喂喂)假如说lian_a1是普通站立动作,lian_a2是吃饭动作,我在游戏里肯定是满足了某个条件小哥才会开始吃饭,不然就是一直站立着,不可能在游戏里像傻子一样一直站站吃吃站站吃吃。要怎么控制动作的变化呢。

 

方法是左下角这个parameters,点+号,新建一个bool变量,起名字就叫a2好了,用它来控制动作从lian_a1变到lian_a2。点击lian_a1到lian_a2的箭头线,

在inspector最下边的conditions里边,点击exit time,把它换成a2.

这样动作切换的条件就不再是lian_a1播放完就放lian_a2,而是当这个bool变量a2为true的时候,动作从lian_a1切换到lian_a2.

现在点击play按钮,可以看到小哥一直在循环lian_a1的动作,这个时候将a2点上勾,他就自然的切换为了lian_a2的动作。在具体游戏里当然是用代码来控制a2的值来改变动作,不过怎么写代码这篇教程就先不涉及了。

lian_a2变回lian_a1同理可以增加一个变量进行控制。

那么,制作动态立绘所有需要知道的事情就是这些了……

停止play回到project页面,把已经制作完成的sprite_lian_body(如果不喜欢这个名字随时可以改掉啦)从hierarchy拖到project资源文件夹里,让它变成一个资源。屏幕上的这个sprite_lian_body就可以删掉,空出屏幕来做其他的事情了~

会生成一个同名的文件夹和obj,这样以后就可以在程序里直接将它作为一个整体调出来显示在屏幕上的任何地方以及显示任意多个(喂)之后也可以在任意时候把它再拖出来修改再放回去,总之一切都是很自由的~

 

最后再说一个不影响动画表现但是很重要的优化程序效率的地方,那就是把所有这些图生成一个atlas。在uni2d的下拉菜单里选择create->texture atlas,可以看到资源文件夹里生成了一个文件。

把它改成任意你喜欢的名字。选中它看他的inspector

在资源文件夹里把涟小哥用到的所有图都拖到它的textures上……

 

把apply和force atlas regeneration都点了。

这样这些图片就被生成在了一个atlas里,每次描绘的时候不用分开载入每张图而是只要载入总图,鉴于每次小哥出现这些图都是要载入的,载入一张比载入多张要负担小很多。

然后在身体的每个部分的sprite上选择使用这个atlas。注意是每个都要……

 

这样就好了喵~

 

关于表情的切换其实主要是通过代码实现的……感觉讲起来会太费劲就先不讲了…………orz



TOP

访客数: 3169826
aa