在虚幻里绘制一个可互动的吃豆人幽灵



↑上面的幽灵不是gif,懒得看文章的朋友可以直接F12看webgl代码
↓下面图片看不清楚都可以右键 查看图像


在虚幻中绘制pac_man ghost的方法和在web中基本相同,增加与角色互动部分。


首先在uv的中间(模型uv或者屏幕uv都可以)画出一个矩形



再画一个圆,因为要多次用到,所以做成函数。与上面矩形合并。


绘制眼睛和瞳孔,因为都是对称的,可以用abs省下一次绘制,再用区域融合颜色绘制基本身体,背景暂用黑色。


之前的所有绘制都是基于屏幕中心,所以可以简单的用sin计算uv轴上两条简单时间曲线作为幽灵的idle状态


这之后大概顺序做了以下几件事:

1.计算角色相对于物体中心的水平和竖直的角度偏移值
首先把所有坐标转到模型的本地空间,因为本地拆分模型到角色的向量→(Actor2PlayerVector)与本地坐标轴正交便于计算。
用面对屏幕时的本地右方向与模型到角色向量的水平分量计算出水平偏移角度,与本地上方向计算数值分量。


2.计算角色到物体距离,用距离做idle状态到与角色互动状态的融合走近时看着角色,离远休闲状态)


3.眨眼 通过压缩uv的v轴的方式模拟眨眼,简单的用曲线lerp(1,20,clamp(1.5*sin(time),0.,1.))控制眨眼过程


4.把幽灵底部绘制成曲线 用最初始的uv的u计算sin加到用于绘制矩形的uv的v,相当于在一条水行线上加上一条曲线,而且曲线依赖水平位置而不是幽灵本身,这样在移动时会有飘动的错觉


5.忘掉了做背景部分


图片太大加载有些慢了 就不再上一大堆图了 下面是最终的材质