效果
步骤
1. 新建一个空白工程,添加第三人称游戏内容包
2. 打开第三人称角色蓝图“BP_ThirdPersonCharacter”
选中弹簧臂组件,将目标臂长度设置为600,z轴方向的插槽偏移设置为100
3. 将“BP_ThirdPersonCharacter”移入场景,该角色用于表示玩家控制的角色
设置自动控制玩家为玩家0
4. 复制一份“BP_ThirdPersonCharacter”,这里命名为“BP_AI”
打开“BP_AI”,将事件图表中的所有节点删除
再删除弹簧臂和摄像机组件
选中网格体组件,在细节面板中点击搜索骨骼网格体资产
复制一份骨骼网格体“SKM_Quinn_Simple”
打开复制后的“SKM_Quinn_Simple1”,点击在内容浏览器中搜索材质实例“MI_Quinn_01”
我们分别复制一下“MI_Quinn_01”和“MI_Quinn_02”
打开材质实例“MI_Quinn_01_Copy”,更改一下参数“Tint”的颜色
再打开材质实例“MI_Quinn_02_Copy”,同样修改一下参数“Tint”的颜色
在骨骼网格体“SKM_Quinn_Simple1”中,修改材质插槽元素
5. 回到蓝图“BP_AI”中,修改骨骼网格体资产为“SKM_Quinn_Simple1”
选中角色移动组件,修改最大行走速度为200cm/s
添加一个Pawn感应组件
感应间隔设置为0.2
6. 新建一个蓝图接口,这里命名为“BPI_Detect”
添加4个函数,分别表示开始侦测、停止侦测、开始追逐、停止追逐
给函数“StartDetection”添加一个输入,命名为“Character”,变量类型为角色的对象引用
7. 新建一个控件蓝图,这里命名为“WBP_Detect”
打开“WBP_Detect”,添加一个画布面板和一个进度条控件,重命名进度条控件为“ProgressBar_Detect”
修改进度条控件的锚点、位置、尺寸、对齐、百分比、条填充类型、填充颜色和不透明度、可视性等属性
8. 打开“BP_AI”,在类设置中,添加蓝图接口“BPI_Detect”
选中Pawn感应组件,添加“看见Pawn上”事件
鼠标双击接口“StartChase”和“StopChase”
添加一个布尔类型变量,命名为“IsChase”,表示AI是否应该去追逐玩家
在事件图表中添加如下节点
9. 打开第三人称角色蓝图“BP_ThirdPersonCharacter”,在事件图表中添加创建控件蓝图的逻辑
在类设置中,再次添加蓝图接口“BPI_Detect”
双击创建接口事件“StartDetection”和“StopDetection”
完整逻辑如下
10. 向场景中放置玩家、AI和一堵墙
此时运行效果如下所示,可以看到此时玩家出现在AI视野中的时候,视口中就会出现代表侦测程度的进度条,随着AI侦测时间的增加进度条的百分比也会增加
为了实现AI侦测到玩家的存在时,AI向着玩家的位置移动的功能,需要向场景中添加导航网格体边界
调整导航网格体边界的缩放范围,按P键显示范围
此时效果如下所示