03 - Creating Obstacles

创建障碍物蓝图类BP_Blocker 继承自Actor类 添加StaticMesh组件 并设置mesh为SM_Rock



03 - Creating Obstacles_第1张图片

编辑BP_FloorTile 地板类 添加4个箭头 放在地板末尾处 用来作为随机生成障碍物的位置


03 - Creating Obstacles_第2张图片

添加函数SetSpawnPoints函数  保存各个箭头的相对位置到添加的 数组变量 SpawnPoints中(视频中GetRelativeTransform 方法在新版中一发生变化)


03 - Creating Obstacles_第3张图片

添加SpawnBlocker函数 用来生成障碍物

Random Integer in Range 根据数组大小生成随机数 AddChildActorComponent 根据位置 以及Deatail中设置的Child类 动态添加actor到当前actor上


03 - Creating Obstacles_第4张图片

在floor的构造函数中调用上面两个函数 运行后应该可以看到随机生成的障碍物


03 - Creating Obstacles_第5张图片

此时障碍物是可以被穿透的 因为当前障碍物还没有添加碰撞网格

进入SP_FloorTile StaticMesh 中的SM_Rock 为岩石添加Collision 点击Collision/Add Convex Collision 点击窗口中的Apply 生成碰撞网格


运行后角色不能穿透了

编辑character蓝图 添加自定义事件Death 当碰撞体检测到碰撞时 调用character的death事件

该事件的逻辑是 设置变量IsDead为true 禁用输入操作 在当前的角色位置播放死亡特效,在当前位置播放死亡声音,设置角色的网格不可见 延迟2s后 输入Restartlevel 重启关卡


03 - Creating Obstacles_第6张图片


03 - Creating Obstacles_第7张图片

上面保存的Is Dead变量是要在tick事件中判断角色时候还继续向前移动 如果没有死亡的话 继续移动


03 - Creating Obstacles_第8张图片

在BP_Block中添加碰撞检测 调用character的Death事件


03 - Creating Obstacles_第9张图片

你可能感兴趣的:(03 - Creating Obstacles)