【UE4 RTS】09-Day and Night

前言

本篇博客实现的效果是太阳和天空会随着游戏时间的变化而变化。

效果

步骤

1. 设置“LightSource”为可移动的

【UE4 RTS】09-Day and Night_第1张图片

2. 新建一个文件夹,命名为“Lighting”

【UE4 RTS】09-Day and Night_第2张图片

3. 打开游戏状态“RTS_GameState_BP”,添加一个函数命名为“GetGameSpeed”

【UE4 RTS】09-Day and Night_第3张图片

添加一个浮点类型的输出,命名为“GameSpeed”,将变量“GameSpeed”赋予到输出引脚“GameSpeed”上。

【UE4 RTS】09-Day and Night_第4张图片

4. 添加一个父类为Actor的蓝图类,命名为“SunRotation_BP”

【UE4 RTS】09-Day and Night_第5张图片

打开“SunRotation_BP”,在事件图表中先获取到游戏状态的引用,将获取的引用作为变量,命名为“GameStateRef”

【UE4 RTS】09-Day and Night_第6张图片

 调用游戏状态“RTS_GameState_BP”中的事件调度器“GameSpeedControl”,当游戏状态中的“GameSpeed”被修改了,这里会调用自定义的委托事件。这里事件图表中的变量“GameSpeed”是将函数“GetGameSpeed”输出的值提升为变量。【UE4 RTS】09-Day and Night_第7张图片

【UE4 RTS】09-Day and Night_第8张图片

5. 打开“RTS_FuncLib”,将函数“SetGameTime”设置为纯函数

【UE4 RTS】09-Day and Night_第9张图片

6. 回到蓝图“SunRotation_BP”中添加一个浮点类型变量,命名为“GameTime”

【UE4 RTS】09-Day and Night_第10张图片

 再添加两个变量,分别命名为“SunRef”、“SkySphereRef”

【UE4 RTS】09-Day and Night_第11张图片

 分别是“定向光源”和“BP Sky Sphere”的对象引用,均为可编辑实例

【UE4 RTS】09-Day and Night_第12张图片【UE4 RTS】09-Day and Night_第13张图片

在事件图表中添加如下节点

【UE4 RTS】09-Day and Night_第14张图片

【UE4 RTS】09-Day and Night_第15张图片

 7. 将“SunRotation_BP”拖入视口

【UE4 RTS】09-Day and Night_第16张图片

 在细节面板中设置定向光源和天空盒的引用

【UE4 RTS】09-Day and Night_第17张图片

此时运行游戏太阳和天空已经能够用跟随游戏时间而发生变化,为了能更清楚的观察这个变化,这里我们将游戏状态“RTS_GameState_BP”中的变量“GameSpeed”和变量“DefaultGameSpeed”的值都由150改为0.25,(测试后改回150)效果如下:

你可能感兴趣的:(#,虚幻4,RTS游戏,ue4)