快捷键

右键 + wasd 移动镜头位置
右键 + scroll 改变镜头移动速度
ctrl + L 平滑改变lighting角度

导出时勾选full rebuild,导出为shipped版本时注意是否源码中有development only的node,可以勾选include debug,不然导出的时候会报错

功能

Auto Exposure 的作用:

  • 动态调整亮度:当玩家进入一个明亮或黑暗的区域时,系统会自动调整屏幕的整体亮度,使得场景中的细节更加清晰可见。
  • 真实感:通过模拟人眼或相机对不同光照环境的适应过程,提升场景的沉浸感。例如,从一个明亮的室外进入阴暗的房间,眼睛需要一段时间适应。
  • 提高可见性:确保场景中不会有太亮或太暗的区域,避免过曝或欠曝的现象。

Message Call

  • (Message) 代表该接口方法是“消息调用”,它不会直接执行,而是 发送一个调用请求
    给目标对象,让目标对象自己决定是否实现该接口并执行逻辑。
  • 这是 动态调用,而不是直接调用 事件。
  • 适用于 目标对象可能没有实现该接口的情况,不会导致蓝图崩溃。

操作

Create - Volume - post process volume 中 mastering mode 改为manual 并将属性更改为infinite extent以应用于全局,开启exposure compensate,至此auto exposure不会再进行补正

light shaft bloom 开启后光线有丁达尔效应

Import多个material合并成一个物体

在Content Browser中右键选择 Blueprint Class,选择父类为 Actor。
在组件面板中点击 Add Component,添加三个 Static Mesh 组件。
分别将这三个组件对应到你的炸弹模型的三个部分。
创建总的game mode之后要在level中的world setting进行override

设置碰撞体

在 Content Browser 中双击打开你的蓝图。
添加碰撞组件:
点击左上角的 Add Component,选择 Sphere Collision(或者 Box Collision)。
命名为 Collision,并调整大小覆盖整个炸弹模型。
检查碰撞设置:
选中 BombCollision,在右侧的 Details 面板中找到 Collision 部分。
设置 Collision Presets 为 OverlapAllDynamic,确保它能检测到其他物体的重叠。
勾选 Generate Overlap Events。
绑定碰撞事件:
选中 BombCollision,在 Details 面板向下滚动,找到 OnComponentBeginOverlap。
点击 + 号,自动跳转到事件图(Event Graph)。
编写逻辑:
事件节点: OnComponentBeginOverlap(当有物体与炸弹碰撞时触发)。
添加 Destroy 节点:
在空白处右键,搜索 Destroy Actor,将其连接到事件的执行输出。
目标设置为 Self,表示销毁当前炸弹。
(可选)添加条件判断:
如果你只想让炸弹和特定对象碰撞时消失,可以在 OnComponentBeginOverlap 和 Destroy Actor 之间添加 Cast To 节点,判断 Other Actor 是否是特定类型(例如玩家或子弹)。
Collision 和 Physics似乎不能一起启用,若启用了Physics则Hit event就是overlap

实现上下移动

创建蓝图:

在 内容浏览器 右键 → Blueprint Class(蓝图类)。
选择 Actor,命名为 BP_MovingCube。
双击打开蓝图。
添加组件:
在 Components 面板,点击 + Add,添加 Static Mesh(静态网格体)。
在 Details 面板设置网格为 Cube(方块)。
创建 Timeline:
在 Event Graph(事件图表)中,右键搜索 Add Timeline,命名为 MoveTimeline。
双击 MoveTimeline 进入编辑器:
添加 Float 轨道(点击 +)。
右键时间轴 → Add Key:
Key 1:时间 0s,值 0。
Key 2:时间 2s,值 200(表示上升 200cm)。
选择 Float Track 并勾选 循环 (Looping) 让方块持续移动。
在事件图中设置位置:
在 MoveTimeline 的输出 Update 连接到 SetActorLocation。
获取 GetActorLocation,然后 用 Make Vector 只修改 Z 轴:
(X = 保持不变, Y = 保持不变, Z = Timeline 输出值)
启动 Timeline:
在 BeginPlay 事件连接 Play(开始播放)。

可以将timeline的输出固定为0到1这样可以用乘以一个数值的方式来控制最终的输出,比如用来控制输出的高度和速度。

实现简单交互

Blueprint - Interact BluePrint - rename the function
Edit - Project setting - Input - interact 设置交互键位
在角色中创建Interact Event(Input) - Getting overlapping actors - For each loop with break -

  • ArrayElement - Does Implement Interface - Branch (this is the loop body for the For Loop)
    之后 在要交互的物体的Class Setting中设置interface为创建好的BP - True - 连接到这个object的interact interface(node) 到此为止loop body结束

实现简单的Fade Away动画

Material Editor中Opaque模式设置为Mask - 将Opaque Mask 的输入设置为DitherTemporalAA(这个node可以让material“分散”而达到视线可以穿过的效果) - promote to parameter 这样在level sequence中就可以调节opacity了
在某个事件之后先创建sequence player 之后再Play
Level Sequence更适用于过场动画

BLUEPRINT

左侧菜单栏里可以点击加号创建新的变量
EventTick 每一帧都会访问的事件
AddActorWorldOffset 更新玩家的位置,sweep选项若开启则遇到障碍后玩家停止移动
Get Player Character - Get Actor Location 获取玩家位置
SpawnActorFromClass 可以选择一个BP类进行生成
右键component - Event - begin overlap 某一个事件会因为和这个组件重叠时执行
Remove from Parent 主要用于 移除 UI 界面(Widget)
Sequence Node 先执行0的再执行1的
Get all actors of Class 选中某个类的所有object
在content browser中右键 - user interface - widget blueprint 创建组件蓝图
create widget 这个事件用于创建蓝图 - 选择widget的reference - 不要忘了最后add to viewport
SetActorLocation 设置玩家坐标