在上一节(UE4 回合游戏项目 14- 添加敌人攻击)基础上继续完成生成玩家、控制玩家的功能
现在战斗地点基本完成,于是就需要制作玩家从外部走到指定地点,从而触发战斗。本节先完成
生成玩家、控制玩家的功能。
效果:
步骤:
1.我们首先需要一个可控制的玩家角色,由WASD和鼠标进行控制
既然所有的玩家都是可控制,我们就把这些控制函数都写在玩家类里面
双击打开playerRole
WASD按键和鼠标需要在项目设置中设置
找到引擎-》输入中的操作映射和轴映射
添加一个跳跃的操作映射
只要这里加入了,在蓝图中都可以使用,如:在playerRole中的事件图表中搜索跳跃,可以看到输入-》操作事件-》跳跃
再次打开项目设置,对轴映射做如下设置:
鼠标xx可以理解为鼠标横向移动,鼠标yy可以理解为鼠标纵向移动
项目设置完后,下面给playerRole添加输入轴事件
2.在playerRole中输入鼠标xx,来添加一个名为鼠标xx的坐标轴事件
同样的,添加一个名为鼠标yy的坐标轴事件
3.添加如下节点表示:鼠标横向移动增加的是Yaw值(绕z轴旋转),鼠标纵向移动增加Pitch值(绕y轴旋转)
这样玩家的鼠标控制就建好了,下面是键盘控制
4.添加如下两个节点
这两个控制玩家的移动,通常是放到CharacterMovement里面的值
因此需要添加移动输入节点,World Direction向前向量,scale Value为旋转的值
添加如下节点来获取玩家控制器的向前向量和旋转值
同样的键盘AD需要获取的是向右向量
这样玩家的控制就设置好了
有了玩家的控制,我们还需要添加一个可控制的玩家,我们先设置玩家出生地
5.随便向场景中添加一个空Actor
打开关卡蓝图
在场景中选中这个空Actor后,在关卡蓝图中创建一个对这个空Actor的引用
然后获取这个空Actor的位置
然后需要在这个地点添加一个玩家
有了玩家后就需要设置生成的这个AI是我们控制的玩家,因此需要控制器
6.添加如下节点,获得玩家控制器,然后让控制器控制指定的角色,这里就是来控制生成的AI,也就是玩家
因为摄像机是跟随角色的,所以删除如下节点
↓
此时运行游戏玩家是可以移动的,但是没有摄像机,因此需要给玩家添加摄像机
7.打开playerRole,添加一个弹簧臂组件
然后在弹簧臂组件中添加一个摄像机组件作为它的子项
在视口中将弹簧臂向上移动一些,然后向下旋转5°
运行游戏,可以看到玩家可以在开放世界自由活动,但是右下角存在菜单选项,因此需要去掉它
8.有菜单是因为游戏开始运行就进入了战斗
因此打开战斗场景,删除下图所示连线
后面我们通过创建一个事件(当玩家进入指定区域)来触发战斗
然后还有个问题是只有鼠标按住才能旋转视角
9.打开玩家控制器playerController1,取消显示光标
此时运行游戏,视角可以左右移动,但是无法上下移动
10.打开playerRole,点击类默认值,然后在细节中勾选使用Pawn控制旋转
选中CharacterMovement
在细节中勾选将旋转朝向运动
点击playerRole(自身)
勾选这个使用控制器旋转Yaw会使得视角跟随鼠标移动而移动(设计类游戏一般会勾选这个)
此时还有一个问题就是鼠标向前推,视角会向下移动,向后推,视角会向上移动。我们可以修改引擎-》输入来解决这个问题,将鼠标Y的值改为-1
此时运行游戏,可以看到文章开头的效果了