UE5学习笔记(十一)——蓝图基础之键盘和鼠标操作移动

目录

键盘控制移动的2种办法

方法1:通过输入修改值控制移动。

【知识点1】添加键盘个事件

方法2:用控制器判定按键按下情况控制移动

【知识点2】IsInputKeyDown和GetPlayerController的使用

鼠标控制移动2种办法

第一步:关闭鼠标输入

方法1:鼠标点击时发生转动

方法2:鼠标移动时发生移动(鼠标事件)

方法3:鼠标移动时发生移动(鼠标值)

【知识点3】鼠标值和鼠标事件的区别

【知识点4】用DeltaSeconds统一所有设备的帧率差别


键盘控制移动的2种办法

【目标】通过键盘WSAD控制物体移动

方法1:通过输入修改值控制移动。

分为两块流程链。

思路:使用键盘个事件触发移动值的变化,通过tick事件节点逐帧响应坐标和移动值的计算结果。

注意:在开始游戏后,一定要先点击game窗口才会响应键盘事件。

【知识点1】添加键盘个事件

由于键盘字母过多,如果只搜索一个字母,需要找很久才能找到,所以建议输入“keyboard events 字母”,可以直接定位到。

该事件节点有按下和抬起两个分支,还可以传出输入的键值,可以通过按键状态,改变移动值的状态。

方法2:用控制器判定按键按下情况控制移动

思路:利用按键控制器检查按键长按状态,当事件发生时,响应坐标移动。

注意:上一个方法使用的事件覆盖了系统中原有的操作,但这个方法没有,所以完成后会发现WSAD原本控制镜头的功能依旧存在,需要将原有的按键功能覆盖

(很抱歉,凭我目前的水平,还没有找到关闭按键功能的设置,所以可以考虑先更改成没有其他功能的按钮,后续如果找到解决办法,会更新该文。)

【知识点2】IsInputKeyDown和GetPlayerController的使用

这两个节点是需要同时出现的。或者说,只要是需要使用到游戏的一些操作时,就需要GetPlayerController这个控制器出现。

当使用一个节点中,有一个输入节点为target,且标题下写明:target is PlayController时,建立这个GetPlayerController节点并连接到target就好。

注意1:如果搜不到InputKeyDown,可以先勾掉右上角的情景模式

注意2:搜索GetGameController时会出现多个一模一样的节点,这里使用的是game下的节点。

【目标达成!】

通过键盘WSAD可以控制物体前后左右移动

鼠标控制移动2种办法

【目标】通过鼠标控制物体滚动或移动

第一步:关闭鼠标输入

由于UE中自带了鼠标控制镜头移动的功能,因此第一步需要将默认的功能关闭。

关闭默认功能需要更改游戏模式的各项设置,在worldsetting中找到gamemode的选项,新建全新的游戏模式,并将default pawn class更改成none,这样可以取消原本已有的鼠标键盘操作。

方法1:鼠标点击时发生转动

该方法比较简单,与键盘控制的方式相同。在禁止鼠标操作镜头之后运行游戏,每次点击鼠标,物品都会旋转一定角度。可以点击ESC退出运行状态哦!

方法2:鼠标移动时发生移动(鼠标事件)

这里需要使用一个新的节点,在鼠标个值下,找到鼠标x和鼠标y。

思路:通过鼠标x和y的变化,将值应用在物体的坐标上。

方法3:鼠标移动时发生移动(鼠标值)

思路:每一帧都判断鼠标位置,并将该位置转化成物体位置

【知识点3】鼠标值和鼠标事件的区别

鼠标事件,是一个事件节点,添加这个节点之后,可以开启一个完整的流程。

鼠标值,是一个值处理节点,只是简单的获得这个值,应用在其他地方。

【知识点4】用DeltaSeconds统一所有设备的帧率差别

当使用到Tick这个节点时,需要考虑到这个节点的运行触发与帧率相关,然而不同设备的帧率并不一致。这就好像有些电脑跑游戏永远满帧,而破电脑就卡的飞起,连30帧都到不了。为了解决这个问题,需要时间的概念,用绝对统一的时间去修正不统一的帧率。

运行后不会有什么变化,只有在不同帧率下才能看出区别。

【目标达成!】

通过鼠标控制物体滚动或移动

猜你喜欢

转载自blog.csdn.net/weixin_35106335/article/details/127462583