我们在使用或者开发虚拟仿真软件的时候经常会遇到这样的需求:点击某个按键让物体改变颜色。那么面对这样的需求时我们应该从哪些方面着手呢?
通过分析可以得知,我们需要准备以下内容:1)可以变色的材质;2)可以接受用户输入的蓝图(如果使用按键)。
第一步:准备可以变色的材质。
在UE4中材质的动态改变需要借助参数来实现。我们首先在内容浏览器中点击右键选择Material创建一个基本材质,双击打开。
打开之后创建一个Const Vector3节点和两个Float节点,前者控制颜色,后者控制Metallic和Roughness,连接如下图所示。
接下来,需要将颜色变为参数,直接在Const Vector3节点右击选择Convert to Parameter,并且设置参数名称为Color(后面会用到这个参数)。
第二步:接受用户输入。
我们需要创建一个蓝图类,在蓝图类中集中处理输入和变色的逻辑。直接在内容浏览器中点击右键选择Blueprint Class,在弹出的选择父类窗口中选择Actor作为基类,重新命名为BP_ColorChanger,创建好之后如下图所示。
接下来,双击打开新创建的BP_ColorChanger蓝图。在左上角的组件面板中点击AddComponent按钮,添加一个Static Mesh组件,添加完成之后选择这个组件,在属性面板中找到Static Mesh,设置该属性为Material Sphere,并将Materials分类下Element0设置为第一步中创建的材质球,效果如下图所示。
切换到Construction Script标签,将Static Mesh组件从组件面板中拖拽到节点视图面板中。搜索Create Dynamic Material Instance,并创建变量,命名为DynMat,如下图所示。
切换到EventGraph标签,删除所有节点,我们这个案例中暂时用不到。我们需要按下R键变成红色,按下G键变成绿色,按下B键变成蓝色。
在节点视图中点击右键搜索R发现有很多符合要求的节点,为了方便快速的找到键盘上的r键,这里推荐给大家一个小技巧,搜索keyboard r可以过滤掉很多节点。
创建R键的点击事件,将上一步中创建的DynMat变量拖拽到节点视图中并搜索Set Vector Parameter Value节点,将其参数设置为Color和红色,如下图连接。
默认的Actor蓝图类是不接受用户输入的,需要简单设置一下。点击Class Defaults,在属性面板中搜索input,设置Auto Receive Input为Player0即可。
点击Compile,将新创建的蓝图类拖拽到关卡中,点击Play,模型变成红色,说明我们的效果基本实现。
用同样的方式和思路可以实现变成绿色和蓝色的操作。我们小案例到此就结束了。