在上一节(UE4 回合游戏项目 14- 添加敌人攻击)基础上继续完成生成玩家、控制玩家的功能

现在战斗地点基本完成,于是就需要制作玩家从外部走到指定地点,从而触发战斗。本节先完成

生成玩家、控制玩家的功能。

效果:

 

步骤:

1.我们首先需要一个可控制的玩家角色,由WASD和鼠标进行控制

既然所有的玩家都是可控制,我们就把这些控制函数都写在玩家类里面

双击打开playerRole

lua 如何控制游戏的 如何控制玩家_项目设置

 WASD按键和鼠标需要在项目设置中设置

lua 如何控制游戏的 如何控制玩家_游戏_02

 找到引擎-》输入中的操作映射和轴映射

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_03

 添加一个跳跃的操作映射

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_04

 只要这里加入了,在蓝图中都可以使用,如:在playerRole中的事件图表中搜索跳跃,可以看到输入-》操作事件-》跳跃

lua 如何控制游戏的 如何控制玩家_游戏_05

 

lua 如何控制游戏的 如何控制玩家_ue4_06

 再次打开项目设置,对轴映射做如下设置:

lua 如何控制游戏的 如何控制玩家_项目设置_07

鼠标xx可以理解为鼠标横向移动,鼠标yy可以理解为鼠标纵向移动 

项目设置完后,下面给playerRole添加输入轴事件

2.在playerRole中输入鼠标xx,来添加一个名为鼠标xx的坐标轴事件

lua 如何控制游戏的 如何控制玩家_游戏_08

 

lua 如何控制游戏的 如何控制玩家_坐标轴_09

 同样的,添加一个名为鼠标yy的坐标轴事件

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_10

 

3.添加如下节点表示:鼠标横向移动增加的是Yaw值(绕z轴旋转),鼠标纵向移动增加Pitch值(绕y轴旋转)

lua 如何控制游戏的 如何控制玩家_游戏_11

 这样玩家的鼠标控制就建好了,下面是键盘控制

4.添加如下两个节点

lua 如何控制游戏的 如何控制玩家_坐标轴_12

 这两个控制玩家的移动,通常是放到CharacterMovement里面的值

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_13

 因此需要添加移动输入节点,World Direction向前向量,scale Value为旋转的值

lua 如何控制游戏的 如何控制玩家_坐标轴_14

 添加如下节点来获取玩家控制器的向前向量和旋转值

lua 如何控制游戏的 如何控制玩家_ue4_15

 同样的键盘AD需要获取的是向右向量

lua 如何控制游戏的 如何控制玩家_坐标轴_16

 

 这样玩家的控制就设置好了

有了玩家的控制,我们还需要添加一个可控制的玩家,我们先设置玩家出生地

5.随便向场景中添加一个空Actor

lua 如何控制游戏的 如何控制玩家_坐标轴_17

 打开关卡蓝图

在场景中选中这个空Actor后,在关卡蓝图中创建一个对这个空Actor的引用

lua 如何控制游戏的 如何控制玩家_ue4_18

 然后获取这个空Actor的位置

lua 如何控制游戏的 如何控制玩家_项目设置_19

 然后需要在这个地点添加一个玩家

lua 如何控制游戏的 如何控制玩家_坐标轴_20

 有了玩家后就需要设置生成的这个AI是我们控制的玩家,因此需要控制器

6.添加如下节点,获得玩家控制器,然后让控制器控制指定的角色,这里就是来控制生成的AI,也就是玩家

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_21

 因为摄像机是跟随角色的,所以删除如下节点

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_22

 ↓

lua 如何控制游戏的 如何控制玩家_坐标轴_23

 

 此时运行游戏玩家是可以移动的,但是没有摄像机,因此需要给玩家添加摄像机

7.打开playerRole,添加一个弹簧臂组件

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_24

 然后在弹簧臂组件中添加一个摄像机组件作为它的子项

lua 如何控制游戏的 如何控制玩家_ue4_25

在视口中将弹簧臂向上移动一些,然后向下旋转5°

lua 如何控制游戏的 如何控制玩家_坐标轴_26

 运行游戏,可以看到玩家可以在开放世界自由活动,但是右下角存在菜单选项,因此需要去掉它 

lua 如何控制游戏的 如何控制玩家_ue4_27

 

8.有菜单是因为游戏开始运行就进入了战斗

因此打开战斗场景,删除下图所示连线

lua 如何控制游戏的 如何控制玩家_坐标轴_28

 后面我们通过创建一个事件(当玩家进入指定区域)来触发战斗

然后还有个问题是只有鼠标按住才能旋转视角

9.打开玩家控制器playerController1,取消显示光标

lua 如何控制游戏的 如何控制玩家_ue4_29

 

此时运行游戏,视角可以左右移动,但是无法上下移动

10.打开playerRole,点击类默认值,然后在细节中勾选使用Pawn控制旋转

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_30

 

lua 如何控制游戏的 如何控制玩家_lua 如何控制游戏的_31

 选中CharacterMovement

lua 如何控制游戏的 如何控制玩家_项目设置_32

 在细节中勾选将旋转朝向运动

lua 如何控制游戏的 如何控制玩家_游戏_33

 点击playerRole(自身)

lua 如何控制游戏的 如何控制玩家_项目设置_34

勾选这个使用控制器旋转Yaw会使得视角跟随鼠标移动而移动(设计类游戏一般会勾选这个)

lua 如何控制游戏的 如何控制玩家_坐标轴_35

此时还有一个问题就是鼠标向前推,视角会向下移动,向后推,视角会向上移动。我们可以修改引擎-》输入来解决这个问题,将鼠标Y的值改为-1

lua 如何控制游戏的 如何控制玩家_ue4_36

 

此时运行游戏,可以看到文章开头的效果了