由于项目是一个手绘风格的2d游戏,所以这个需求只能逐帧动画和骨骼动画来实现。这个需求需要骰子能摇出6种图案,其中两个做出成功和失败的区别,出于减少工作量和资源占用的考虑,决定把它分成两个部分来制作,一个是前半部分的滚动状态,和后半部分6个不同结果的减速停止,前者用手绘逐帧,后者用一张静态图+骨骼权重来实现伪3D效果。
首先制作骰子滚动部分,这个部分因为涉及到很复杂的透视和为了转动视觉连贯性考虑,使用到了Blender作为辅助。这部分很简单,用修改器倒角做出骰子的圆角,调整摄像头位置,做出三轴的旋转动画,调整帧率与画布尺寸输出成序列帧。这里综合考虑一下流畅程度和手绘工作量,给了12帧。
然后这里用了Ps里的滤镜-消失点来模拟透视,有两个好处,一个是能获得更准确的透视变化和关系,二是方便修改上面的图案,一改就是改好多帧真的很恼火。并且记得把每一帧转成智能对象
![给每帧加上运动方向的动态模糊滤镜,通用的滚动部分就完成了。]()
给每帧加上运动方向的动态模糊滤镜,通用的滚动部分就完成了。
骨骼的部分,主要的难点在于这个伪3D的模拟,spine官网上有老多简单的模拟3D的教程,但都不怎么适合目前这种情况,最终尝试出的解决方案是使用基础的多边形网格权重+一组变换约束的骨骼来实现。关键在这组骨骼,上面这根用来控制顶面四个顶点,下面的控制底面,同步约束他们的旋转和位移,来模拟一个扭转的效果。考虑到透视,下面的旋转角度要大于顶面。
最后使用皮肤功能来实现6个结果的切换,这里注意皮肤要放到插槽里不能放到骨骼上,才能继承网格和关键帧。

最终输出给引擎的资源只有12帧+6张结果+一张光效