草庐IT

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

一只半路出家的猫 2024-05-12 原文

目录

键盘控制移动的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帧都到不了。为了解决这个问题,需要时间的概念,用绝对统一的时间去修正不统一的帧率。

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

【目标达成!】

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

有关UE5学习笔记(十一)——蓝图基础之键盘和鼠标操作移动的更多相关文章

  1. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  2. ruby - 在 Ruby 中用键盘诅咒数组浏览 - 2

    我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作

  3. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  4. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  5. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  6. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  7. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  8. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  9. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  10. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

随机推荐