在上一节(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添加如下节点:

最终效果如文章开头所示。



















