在上一节(UE4 回合游戏项目 16- 控制玩家)基础上,增加角色走进指定区域从而触发战斗场景的功能
主要思想是添加一个碰撞区域,当玩家与该区域碰撞时,触发战斗事件
效果:
步骤:
1.新建蓝图类
选择Actor
命名为碰撞进入战斗
2.双击打开该蓝图,添加一个盒体碰撞组件
调整一下该组件缩放
点击事件图表,可以看到有一个名为事件Actor开始重叠的节点,表示当Actor进入盒体碰撞时会触发该节点,Other Actor表示进入盒体碰撞区域的那个Actor
将Other Actor转换为玩家类,因为敌人进入该区域不需要触发这个名为事件Actor开始重叠的节点
3.当重叠的是playerRole类时,我们需要获取到战斗场景的引用。首先打开battleScenario,添加一个名为进入战斗的自定义事件
4.打开gameMode1,在事件开始运行时,获取场景中指定类的所有Actor
选择 battleScenario
由于场景中只有一个battleScenario类,因此只需获取数组中的第0个对象
提升为变量
变量命名为战斗场景,这样就获取到了对战斗场景的引用
5.回到名为碰撞进入战斗这个蓝图,获取gameMode1中的战斗场景这个变量,然后从战斗场景中调用进入战斗这个自定义事件。此时,只要玩家控制的角色进入战斗区域,就可以触发进入战斗的事件。
6.将碰撞进入战斗这个蓝图添加到场景中
此时运行效果如下:
可以看到,当玩家控制的角色进入指定区域后,就会触发战斗事件。
接下来我们需要删除现在控制的这个角色,切换到battleScenario中控制的角色
通过如下节点删除指定的Actor,指定的Actor为类型转换为playerRole这个节点中As Player Role输出的对象,这个对象就是进入碰撞区域的Actor
接下来将摄像机转换到战斗场景中的摄像机
7.打开battleScenario蓝图,当触发进入战斗事件后,将镜头由玩家控制器上的摄像机转到self(battleScenario)中的摄像机上
接下来创建在指定的战斗区域中创建一个玩家
8.打开关卡蓝图,将如下标注的节点删除
删除后如下:
9.打开battleScenario蓝图,选中进入战斗节点
添加两个输入参数,第一个命名为碰撞玩家,类型为playerRole对象,第二个命名为敌人数量类型,类型为敌人数量类型的数组
添加如下节点:
打开碰撞进入战斗
将敌人数量类型提升为变量
将该变量变为公有变量
变量命名为敌人的类型和数量
该变量作为公有变量的作用是,可以直接在蓝图拖入场景后设置参数,如下图所示,可以设置敌人类型和数量
现在我们生成了敌人,还需生成玩家
10.打开battleScenario,获取进入碰撞区域的玩家的transform
提升为变量
命名为碰撞的位置
之后在该位置生成一个玩家
11.首先将如下节点重叠为一个节点
命名为怪物生成节点
拷贝敌人生成位置这个变量,新变量命名为玩家生成位置
创建如下节点,将玩家生成的位置加入到玩家生成位置这个数组变量中
通过如下节点生成玩家
将碰撞玩家提升为变量
变量命名为碰撞玩家
获取碰撞玩家的Pawn Class
将生成的玩家设置为gameMode1中的玩家变量
更改battleScenario中节点如下,删除标注区域内的节点
在碰撞进入战斗蓝图中创建如下节点
还需要添加鼠标显示,在battleScenario添加如下节点:
最终效果如文章开头所示。