目录
【知识点2】IsInputKeyDown和GetPlayerController的使用
【知识点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帧都到不了。为了解决这个问题,需要时间的概念,用绝对统一的时间去修正不统一的帧率。
运行后不会有什么变化,只有在不同帧率下才能看出区别。
【目标达成!】
通过鼠标控制物体滚动或移动