效果
步骤
1. 新建一个空白模板工程
2. 添加一个第一人称游戏内容包
3. 打开项目设置,创建一个新的通道检测
取消勾选“自动曝光”
4. 打开第一人称角色蓝图“BP_FirstPersonCharacter”,添加一个新图表,命名为“射线检测”
添加如下节点,注意“按通道进行球体追踪的”的引脚“Trace Channel”设置为上面创建的新通道“HighLight”
5. 在世界场景设置中将游戏模式设置为“BP_FirstPersonGameMode”
此时运行游戏可以看到出现球体检测效果
6. 新建一个蓝图接口,这里命名为“BPI_HighLight”
打开“BPI_HighLight”,添加两个函数,分别命名为“TurnOn”和“TurnOff”
7. 找到蓝图“BP_Pickup_Rifle”,我们希望能够让这个步枪高亮显示
打开“BP_Pickup_Rifle”,删除球体碰撞组件以及事件图表中的所有节点
设置通道“HighLight”的碰撞响应
在类设置中,添加刚才创建的蓝图接口“BPI_HighLight”
在事件图表中添加如下节点,当事件“TurnOn”和“TurnOff”执行的时候就给步枪设置覆层材质
8. 新建一个材质,这里命名为“M_HighLight”,设置混合模式为半透明
由于步枪是个骨骼网格体,因此需要勾选“使用骨骼网格体选项”,否则覆层材质无法正常渲染
在材质图表中创建如下节点
9. 回到步枪蓝图“BP_Pickup_Rifle”中,当事件“TurnOn”执行后,就设置覆层材质为“M_HighLight”,执行“TurnOff”后就取消设置覆层材质
10. 回到第一人称角色蓝图“BP_FirstPersonCharacter”中,在图表“射线检测”中,添加如下节点,当检测到了步枪时调用接口方法“TurnOn”,否则调用“TurnOff”
运行效果如下所示: