创建障碍物蓝图类BP_Blocker 继承自Actor类 添加StaticMesh组件 并设置mesh为SM_Rock
编辑BP_FloorTile 地板类 添加4个箭头 放在地板末尾处 用来作为随机生成障碍物的位置
添加函数SetSpawnPoints函数 保存各个箭头的相对位置到添加的 数组变量 SpawnPoints中(视频中GetRelativeTransform 方法在新版中一发生变化)
添加SpawnBlocker函数 用来生成障碍物
Random Integer in Range 根据数组大小生成随机数 AddChildActorComponent 根据位置 以及Deatail中设置的Child类 动态添加actor到当前actor上
在floor的构造函数中调用上面两个函数 运行后应该可以看到随机生成的障碍物
此时障碍物是可以被穿透的 因为当前障碍物还没有添加碰撞网格
进入SP_FloorTile StaticMesh 中的SM_Rock 为岩石添加Collision 点击Collision/Add Convex Collision 点击窗口中的Apply 生成碰撞网格
运行后角色不能穿透了
编辑character蓝图 添加自定义事件Death 当碰撞体检测到碰撞时 调用character的death事件
该事件的逻辑是 设置变量IsDead为true 禁用输入操作 在当前的角色位置播放死亡特效,在当前位置播放死亡声音,设置角色的网格不可见 延迟2s后 输入Restartlevel 重启关卡
上面保存的Is Dead变量是要在tick事件中判断角色时候还继续向前移动 如果没有死亡的话 继续移动
在BP_Block中添加碰撞检测 调用character的Death事件