接上回书~~我们开启一个新场景来创建目标材质的测试环境
![](https://img.haomeiwen.com/i2897290/a09139485b40a328.png)
创建新的测试场景
![](https://img.haomeiwen.com/i2897290/66ef511fefe49dfe.png)
由于我把旧的删了新的也叫TempMaterial好了
![](https://img.haomeiwen.com/i2897290/85ff1c3be4b7df36.jpg)
最终材质连线的全貌,下面开始具体分析各个部分是如何思考的
顶点动画部分
![](https://img.haomeiwen.com/i2897290/0642b75383300b8e.png)
碰撞检测坐标与当前参与运算的顶点坐标进行距离运算,同时减去偏移值完成波形偏移运动
![](https://img.haomeiwen.com/i2897290/b4f8c61b3e7a8084.png)
基础的形状处理
![](https://img.haomeiwen.com/i2897290/74b9508727953201.png)
提出指定高度的波形并优化
接下来是颜色的过度
![](https://img.haomeiwen.com/i2897290/8ee1e2f64ab05c4e.jpg)
颜色过度部分的解析
创建测试载体
![](https://img.haomeiwen.com/i2897290/846845f58514547a.png)
创建一个staticMeshActor类型的蓝图作为目标
![](https://img.haomeiwen.com/i2897290/fa3507bb93f49dee.png)
这个mesh是引擎自带的,勾选显示引擎自带内容即可搜到了
![](https://img.haomeiwen.com/i2897290/93a66bac9c86541e.png)
编写之前还需要对模型的碰撞就行一定的修改,我们需要更细致的碰撞效果先把旧的删了
![](https://img.haomeiwen.com/i2897290/e8a041d28cc7d057.png)
在菜单栏找到ConvexDecomposi,我们可以用它生成数个小型碰撞体拼接成当前模型的近似形状
![](https://img.haomeiwen.com/i2897290/af7c1a6394aa1bf5.png)
由于纯测试,精度和数量都给满
![](https://img.haomeiwen.com/i2897290/1bd9e0d65c1327ae.png)
可以更改视图模式【playerCollision】来观察目前的碰撞形状,同时我们看到总共用了12个碰撞做的组合【大部分都在地盘的形状模拟上,球型部分其实就一个网格】
![](https://img.haomeiwen.com/i2897290/726180a78683b929.png)
由于是大致模拟无法填满球型,所以姑且点开collision模式,删掉自动创建的上半部分碰撞
![](https://img.haomeiwen.com/i2897290/ccd92bd53564c821.png)
换个球形碰撞体
![](https://img.haomeiwen.com/i2897290/dd50848cc3d841c5.png)
缩放并移动到合适的位置后player collision模式下检查一下
碰撞模型处理完再来处理一下材质对象
![](https://img.haomeiwen.com/i2897290/4bd3af32783e6f06.png)
创建一个材质实例作为实际使用对象
![](https://img.haomeiwen.com/i2897290/ebef025fecae0205.png)
对材质实例中的数值做一定调整,每个参数作用如名字所示,so
打开该蓝图类,进行编辑
![](https://img.haomeiwen.com/i2897290/7a4023e1d752aa85.png)
BeginPlay的时候将刚才创建的动画材质实例付给主要材质通道,同时获得该材质的引用,通过Cut Color 事件来处理蓝图到材质的参数赋值
![](https://img.haomeiwen.com/i2897290/82e9a7ee7ed58153.png)
我这里是定义的5秒完成由0~1的变化
![](https://img.haomeiwen.com/i2897290/299f33b4e119843f.png)
将刚才做好的测试物体放在场景里
接下来是做一个射线检测功能来获取碰撞点坐标
![](https://img.haomeiwen.com/i2897290/462382b1d5440863.png)
在场景蓝图创建射线检测脚本
![](https://img.haomeiwen.com/i2897290/acca9275907cdcd5.png)
用tick每帧绘制出当前射线的触发点方便我们测试观察
![](https://img.haomeiwen.com/i2897290/66fc251c732b33d6.png)
在下面做个按键触发的射线检测功能,同时将检测结果发送给测试物体【这里没做判断打到地面也是会触发的,不必在意】
最后测试与开篇效果一致无误~
有时间了继续更新如何将原始材质提取成【材质方法】,与如何使用【静态的材质变量类】来简化蓝图到材质的赋值。
网友评论