ue4.26学习笔记1-角色移动

发布时间 2023-09-18 17:40:37作者: hello小番茄

ue4.26学习笔记1-角色移动

角色旋转

首先创建character蓝图类

打开创建的蓝图类,为骨骼网格体添加模型,此处使用小白人的模型,然后添加弹簧臂组件和摄像机组件

项目设置->输入中添加鼠标x轴和y轴的操作映射,此处x轴操作映射命名为鼠标左右移动,y轴操作映射命名为鼠标上下移动,其中x轴就是控制摄像机左右看,y轴就是控制摄像机上下看,此处y轴的缩放为-1也是为了符合一般游戏的操作习惯(可自行设置成1来感受一下区别)

设置完之后回到蓝图类的图标,添加以x轴和y轴操作映射为命名的事件进来,如下图所示,选择事件选项下的时间,因为事件才会有输出引脚,下面绿色的只会输出操作映射的值(该值范围是-1n~1n,其中n就是项目设置时设置的缩放值)

然后将添加控制器Yaw输入添加控制器Pitch输入添加进来,其中鼠标左右移动和Yaw(z轴)连接,鼠标上下移动和Pitch(y轴连接),大家可以想象一下我们左右摇头的时候其实是绕着z轴旋转,上下看的时候是绕着y轴旋转


回到场景将蓝图拖入到场景中就会生成一个角色,此时选中生成的角色,在细节面板中输入pawn找到自动控制玩家下拉框中选择玩家0,这样你开始运行的时候才能控制这个角色

然后运行,会发现鼠标左右移动角色能够跟随移动正常,但是鼠标上下移动的时候却好像没有反应,失效了?其实不是,回到蓝图类选择类默认值会发现此处默认勾选了使用控制器旋转Yaw(z轴)也就是说我们通过鼠标左右移动控制控制器Yaw,而角色通过控制器Yaw来控制角色的Yaw(z轴)轴旋转,我们也可以通过鼠标上下移动控制控制器Pitch但是角色没有勾选使用控制器选择Pitch,所以就造成了鼠标上下移动但是角色没有反应(若此处你怀疑是事件没有触发,那么你可以在事件触发后输出字符串来判断事件是否触发了)

如何解决?勾选上控制器旋转Pitch??emmmm你以后可能会需要这个功能,但是此处不需要,但是你可以勾选上尝试一下效果如何!
此处提出一个解决方案,那就是取消勾选类默认值中的控制器旋转Yaw,选择角色移动组件在细节面板中勾选将旋转朝向运动。注意类默认值中的使用控制器旋转Yaw(Pitch/Roll)和将旋转朝向运动只能选择其中一个,如果两个都勾选了那么将旋转朝向运动就会失效实际上使用的就是使用控制器旋转

然后选择弹簧臂组件在细节面板中选择使用pawn控制旋转这样就能通过控制器来旋转弹簧臂,从而实现看到角色正面并且鼠标上下移动也能生效

角色移动

同样在项目设置中添加轴映射分别是键盘W,A,S,D四个键的映射对应前后移动(WS),左右移动(AD),其中向后移动和向左移动分别设置为-1,之所以这么设置是因为ue4中默认向前移动和向右移动为正

然后在蓝图中将轴映射的事件添加进来,同时也将添加移动输入节点添加进来,该节点的World Direction接收一个3d向量,scale接收浮点值也就是轴映射中的缩放的值,该节点会将World Direction*scale得到一个方向向量作为角色移动的方向,所以该节点的作用就是提供运动的方向,至于角色的移动速度就是在角色移动组件中设置的

以上的一些点,你可能会好奇为啥获取控制旋转节点长这样(该节点的作用是获取控制器的旋转),那是因为此处将结构体展开了(至于结构体是什么如果想知道的话去看看c语言吧)

完成。