在游戏开发中经常需要制作空气墙,以防止玩家走入非预定的场景区域,下面就来讲讲一种科幻感空气墙的做法:
1.准备材质函数
在制作开始之前,需要先创建2个材质函数,ObjectScale材质函数可以获取当前对象的缩放信息:
ObjectLocalBounds材质函数可以获得当前对象的Bounds信息:
2.制作边缘效果
首先需要制作护盾的边界高亮区域,可以取+X轴Mask、-X轴Mask、+Y轴Mask等四个区域进行混合,而护盾核心区域则通过Tile平铺贴图和叠加噪声实现。
首先将护盾的世界空间位置变换为本地空间位置,这样不会受到模型旋转影响,然后会通过刚刚的Bounds信息进行相对数值的获取。
世界空间位置变换为本地空间位置:
执行Comment内的节点后,可以得到经过Bounds信息处理的相对值:
将数值变为负数,在+X和-X轴上都执行一次,并通过Max节点混合:
继续扩展Y轴也进行Max节点混合操作,但结果会发现四个角落有棱边:
这不是想要的效果,仔细检查发现通过Add节点来代替Max节点,可以解决这个问题:
3.制作内部平铺图案
内部平铺图案要简单很多,只需要叠加噪声位移即可。
首先使用点状图案素材,进行UV缩放处理,达到平铺效果。
对点状平铺图案素材叠加噪声,使用Panner节点实现噪声位移动画
最后叠加边缘(MaskEdge)和内部平铺(TilePoints)图案,实现科幻墙壁效果。