23 / 10 / 11
add timeline 可以用来控制时间轴。
其中时间轴可以使用reverse参数。(但其实基于时间轴的动画CPU开销蛮大的。)
双击打开进行设置,包括时间等特殊参数,还可以拉曲线。右键以添加关键帧,在已有的关键帧上右击可以拉曲线。
Lerp 是插值节点。在两个值之间变化时,使用这一节点。lerp(rotator)适合用来处理旋转。
set capsule half height 节点可以设置碰撞盒高度。
可以用 add custom event 来设置自定义事件。
branch 是分支节点。B+鼠标左键生成一个分支。
RestartLevel 命令可以重启关卡。
GetPlayerCharacter 节点可以获取对玩家角色的引用。
Get Overlapping Actors 节点可以用于获取重叠信息。它会输出一个数组,内容是重叠的所有Actor。0号是Target 自己。
is Valid 用于判断某变量是否存在。
set simulate physics用于赋予物理效果。
wake all rigid bodies显然用于碰撞。
User Interface文件夹下的空间蓝图用于设计页面。
可以给后处理设置优先级。
setblendweight 节点可以动态地调节混合力度。
map range clamped 节点可以按两个函数进行正比例映射。
要在蓝图B中引用蓝图A的函数,需要将蓝图A作为一个参数新增到蓝图B中。变量类型中选择蓝图A,并附上相应的引用方式。
这一引用需要手动在蓝图编辑器中暴露,才能在主场景的细节面板中编辑函数的作用对象(如果引用本身有其它实例的话,就可以挑选一个或几个)。
同时,可以通过在蓝图B中添加类型为Actor的变量来实现对场景中物体的引用,在这之后只需要通过Loop节点遍历对变量自身的引用(self)即可。
在项目设置-引擎-碰撞中设置自定义碰撞可以方便地管理事件。
一般来说,为可互动物品添加两个大小不同的球体碰撞很好用:外层用来显示提示,内层用来交互。
Promote to Variability节点可以将端口提升为变量。
类似的,可以用构造蓝图来进行初始化,一个常见的用法是使用get actors in class 节点获取某父蓝图的所有实例,并把他们加入到某个可互动对象中。
例如,如果我们有BP_Interactive_Parent和BP_Key_Parent两个作为实现“锁和钥匙”关系的父类actor,并实例化了BPC_Door和BPC_Key放在关卡中,只需要在BPC_Key的事件中写入“设置可互动对象”方法,并在构造蓝图中获取BPC_Door类并在这个方法中调用,就可以用钥匙解锁所有门。这样的设计可以在复用大多数互动逻辑的同时,尽可能减少不同子蓝图之间的串扰。
新建一个UMG资产,实现结束页面的设计和地图的跳转;
GameMod中新增一个自定义事件,在其中显示刚才创建的Widget和一些其它操作方面的逻辑性控制;
物件中对事件进行强制类型转换,调用这个自定义事件;
角色蓝图中制作隐藏部分元素的功能,可以把一部分ui组件实例从父类中移除来实现,以节省性能;
player controller中处理交互,必要的时候重载隐藏功能。一般的时候直接调用即可。