开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2059

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 259|回复: 9

[ifreecode] 从零开始学虚幻4游戏开发系列11

[复制链接]  [移动端链接]
排名
41190
昨日变化
18

38

主题

38

帖子

113

积分

Rank: 9Rank: 9Rank: 9

UID
257049
好友
0
蛮牛币
533
威望
0
注册时间
2017-11-30
在线时间
25 小时
最后登录
2018-1-18

专栏作家

发表于 2017-12-27 16:02:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
在本课的内容中,我们将学习如何创建可以动态变化的材质。

需要提醒大家的是,材质不仅仅可以作为花瓶一样的装饰品,我们也可以使用材质来辅助游戏设计。

接下来,我们将学习如何创建动态变化的材质,从而实现当玩家收集香蕉物品的时候,让方块从白色变成红色。

在创建材质实例之前,我们首先需要设置方块的材质。

在虚幻4中打开我们的项目,然后在Content Browser的Material文件夹中找到M_Cube,并双击将其打开。
图片1.png

图片2.png

首先我们需要创建材质的颜色。在材质编辑器中,可以看到有一个Constant3Vector节点连接到Base Color节点上。使用该节点来选择颜色是非常合适的,因为我中包含了RGB三个通道。

现在我们已经有了红色,接下来需要创建白色。添加另一个Constant3Vector节点,可以按下数字3键,然后左键单击Event Graph的空白区即可快速创建。

选中该节点,在Details面板中将Constant下面的R,G,B都设置为1.0。

图片3.png

为了让色彩从白色变成红色,我们需要创建两者之间的平滑过渡。而实现这一点的最简单方式就是使用linear interpolation(线性插值)。

图片4.png

这个词听起来有点唬人,其实也没那么复杂。线性插值的作用就是找到A和B两个数值之间的一个数值。在下图的例子中我们使用线性插值找到和100,200等距的值,也就是150。
当然,如果你对线性插值的数学概念很感兴趣,可以参考百度百科,或其它的更详细解释:

https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC

如果我们能够控制alpha值,那么线性插值就会更加强大。我们可以认为alpha是A和B之间的百分之,当alpha为0时,我们得到的数值是A,而alpha为1时,数值是B。

在本课的内容中,我们将使用所收集到的香蕉梳理来控制alpha值。

使用LinearInterpolate节点

首先我们需要添加一个LinearInterpolate节点。按下键盘上的L键,然后在Event Graph的空白区左键单击。

图片5.png

接下来还需要创建一个Scalar Parameter节点,然后将其命名为ColorAlpha。接着我们按照以下方式来连接节点。

图片6.png

注意:默认情况下LinearInterpolate节点输出的是A,这是因为alpha的初始值是0,当alpha值变成1的时候,节点输出的就是B。

好了,现在材质已经准备好了。接下来我们还有一些准备工作,但是先让我们检查一下一切是否正常。点击材质编辑器上的Apply按钮,然后关闭材质编辑器。如果我们点击工具栏上的Play按钮,就可以看到方块的色彩是白色的了。

图片7.png

为了让方块可以改变颜色,我们需要动态编辑ColorAlpha参数。但是现在有一个问题,我们没法在游戏运行的时候动态编辑材质实例的参数。
解决的方法是使用动态材质实例。


关于Dynamic Material Instances(动态材质实例)


和常规的实例对象不同,我们可以在游戏运行的过程中对动态材质实例进行编辑。而实现这一点既可以使用蓝图系统,也可以直接使用C++代码。

我们可以对动态材质实例做很多操作,比如更改物体的透明度,让其变得透明,或是增加物体表面的specularity(镜面发射),让其显得更潮湿。

图片8.png

关于动态材质实例,更有意思的一点是我们可以分别对其进行编辑。

创建动态材质实例

我们只能在游戏运行的过程中创建动态材质实例,可以用蓝图系统或c++来实现这一点。

在虚幻4主编辑器的Content Browser中,找到Blueprints文件夹,然后双击打开BP_Player蓝图文件。

图片9.png

首先我们要创建一个新的动态材质实例,然后将其应用到方块的模型上。为此,我们可以在虚幻刚刚生成角色时进行这个操作,也就是要使用Event BeginPlay节点。

在Event Graph视图中找到或添加一个新的Event BeginPlay节点。

图片10.png

接下来添加一个Create Dynamic Material Instance(StaticMesh)节点,该节点将会同时创建并应用一个新的动态材质实例到方块模型上。

图片11.png

接着我们需要设置方块所使用的材质。在该节点的Source Material接口从下拉列表中选择M_Cube。

为了方便稍后引用材质,我们需要将其保存到一个变量中。为此,可以右键单击Create Dynamic Material Instance节点的Return Value蓝色接口,然后选择Promote to Variable。
此时在My Blueprint选项处会看到出现了一个新的变量,将其更名为CubeMaterial。也可以使用快捷键F2来完成该操作。

图片12.png

图片13.png

最后让我们从Event BeginPlay节点到Create Dynamic Material Instance节点之间的白色接口之间添加连接。

图片14.png

注意:一旦虚幻引擎生成了BP_Player,就会创建一个新的动态材质实例对象,然后将其应用到StaicMesh组件上。然后它会将所创建的材质保存在名为CubeMaterial的变量中。

好了,本课的内容到此结束。
在下一课的内容中,我们将创建一个计数器,从而记录所收集的

回复

使用道具 举报

7日久生情
1618/5000
排名
4131
昨日变化
25

7

主题

837

帖子

1618

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
168159
好友
3
蛮牛币
5139
威望
0
注册时间
2016-9-12
在线时间
490 小时
最后登录
2018-1-18

迈向小康锦衣玉食

发表于 2017-12-27 17:06:27 | 显示全部楼层

回复

使用道具 举报

7日久生情
2066/5000
排名
4452
昨日变化
21

2

主题

1518

帖子

2066

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
8180
威望
0
注册时间
2017-9-6
在线时间
280 小时
最后登录
2018-1-18
发表于 2017-12-28 08:03:11 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

5熟悉之中
892/1000
排名
2531
昨日变化
10

0

主题

132

帖子

892

积分

Rank: 5Rank: 5

UID
146162
好友
0
蛮牛币
1367
威望
0
注册时间
2016-4-20
在线时间
290 小时
最后登录
2018-1-18
发表于 2017-12-28 09:26:40 | 显示全部楼层

感谢分享

回复

使用道具 举报

3偶尔光临
180/300
排名
9530
昨日变化
121

0

主题

17

帖子

180

积分

Rank: 3Rank: 3Rank: 3

UID
230664
好友
2
蛮牛币
201
威望
0
注册时间
2017-7-6
在线时间
73 小时
最后登录
2018-1-18
发表于 2017-12-28 09:32:15 | 显示全部楼层
老铁,双击666  谢谢老哥的不吝教学

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1111/1500
排名
6125
昨日变化
41

0

主题

789

帖子

1111

积分

Rank: 6Rank: 6Rank: 6

UID
219676
好友
0
蛮牛币
563
威望
0
注册时间
2017-7-12
在线时间
144 小时
最后登录
2018-1-18
发表于 2017-12-28 11:16:51 | 显示全部楼层
谢谢分享

回复

使用道具 举报

排名
26938
昨日变化
19

0

主题

24

帖子

46

积分

Rank: 1

UID
186188
好友
0
蛮牛币
11
威望
0
注册时间
2016-11-23
在线时间
12 小时
最后登录
2018-1-15
发表于 2017-12-29 00:28:53 | 显示全部楼层
謝謝分享

回复

使用道具 举报

排名
34160
昨日变化
32

2

主题

32

帖子

53

积分

Rank: 2Rank: 2

UID
257804
好友
0
蛮牛币
119
威望
0
注册时间
2017-12-4
在线时间
14 小时
最后登录
2018-1-17
发表于 2018-1-6 23:21:15 | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
34160
昨日变化
32

2

主题

32

帖子

53

积分

Rank: 2Rank: 2

UID
257804
好友
0
蛮牛币
119
威望
0
注册时间
2017-12-4
在线时间
14 小时
最后登录
2018-1-17
发表于 2018-1-6 23:26:09 | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
34160
昨日变化
32

2

主题

32

帖子

53

积分

Rank: 2Rank: 2

UID
257804
好友
0
蛮牛币
119
威望
0
注册时间
2017-12-4
在线时间
14 小时
最后登录
2018-1-17
发表于 2018-1-6 23:35:45 | 显示全部楼层
感谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表