大家天天都在找好游戏玩,不论是2D、2.5D、3D,但终归第一印象的好坏一定是游戏的画面。下面我们就看看一个游戏开发商是如何制作自己游戏2.5D的游戏角色的。
两周前在 大会上发表了关于制作《 in a 》中2.5D角色的动画制作过程,我想是时候发布一些已经探讨过的内容。我对2D和3D之间的模糊界限一直很感兴趣(游戏邦注:作者曾从事一些关于2.5D动画制作工作),对研发来说,引进代码使动画呈现生命力正是游戏开发过程中最有趣的环节之一,现在将分享一些使用3D工具制作2D效果的游戏开发经验。
我们使用Unity创建了《 in a 》,其中一切内容都是由多边形组成,但多数物体只是一些映射到简单位面的透明纹理。游戏中没有光线,我们只是创造了背景光。我们通过一些不同方法处理美术资产,并在熟练使用Unity引擎的过程中不断推进这一过程。
使用软件的构建效果
从早期原型开始,创建主角的时间就有点紧迫,那时我们尚未掌握Unity的动画脚本处理方法。这些角色最初是使用After 制作而成的2D动画,之后将动画帧渲染成精灵地图集纹理(游戏邦注:即包含所有动画帧的网格)。在Unity引擎中,每个角色都是由单个位面组成,我们会为其分配精灵地图集纹理。这种位面只能展现缩小的纹理,我们可以通过变换所展示的精灵地图集纹理而呈现不同的动画帧
软件构建过程中的绘图素材
成品动画展示(含开篇第一张图)
玩家角色实现脚本动画的地方就在于它们的伸展与挤压过程。当角色着地时,通过略微挤压整个位面,就可以让角色从高处跳并落着地的这一瞬间呈现更多运动感和反应感,并且不会干扰动画帧的播放——你可以看到角色落地奔跑并且步履不乱的挤压状态。这一操作虽然很简单,但却能极大增强视觉效果。我们还在游戏的其他一些地方采用了类似的操作。
伸展与挤压效果 设计图
实际演示效果
这个简单的坏蛋也是由多个位面组合而成。这是我们创造的第二个角色,我们用Unity制作了所有的关键帧动画,每个移动环节都有各自的动画文件。我将自己从《古墓丽影1》的树中所借鉴的一个技巧运用到了敌人腿部的十字式位面——它们可以用3D方式围绕身体而旋转,并且仍可在任意角度呈现。当我们编写敌人的动画播放以便对应其行动时,这个简单的角色就开始显得更加活灵活现。
我们针对这个敌人用Maya创建了一个整齐相连的骨架,但这也令该几何体仅能呈现正位面。在制作了四个主要方向的动画移动循环,这些循环就可以动态地在代码中混合并变速以对应角色的位移。这正是使用3D工具制作2D角色的强大之处——你可以控制所有的程序性动画。我们还使用这个方法触发该角色受伤时所呈现的玻璃裂痕(否则受损的位面就会按比例缩小并隐藏到身体之后),我们还让这种水母眨眼睛,并动态追踪玩家的位置
十字式位面效果 设计图
动画演示 效果
至于这个迷你boss,我们使用Unity将不同剪辑片段划分为多个动画层。头部和身体属于同一个操作层面,但它们是在不同层面进行动画播放。这样我们就能够根据加速和方向结合多个移动动画,同时又让角色头部的闲置、射击动画的触发免受其身体移动的影响
多个动画层 设计效果
多个动画层 演示效果
我们追求的是矢量霓虹的视觉效果,而固定2D视图的一大好处就在于我们可以直接将发光和扩散效果整合到纹理中。另外,由于我们的资产较为简单,我们可以轻松运用粒子效果。为将所有元素整合到一起,我们发现在镜头前设置缓慢转移的大型多边形,并且每个多边形都添加一个带点模糊色彩的纹理(会闪光的那种),确实有助于营造一个光线微移的发光太空环境。
有话要说...