[UE4]虚幻4蓝图实现类似永劫无间的钩锁系统
[UE4]虚幻4引擎实现类似永劫无间的钩锁系统
基于UE4实现类似永劫无间的钩锁系统,主要介绍一下思路,抛砖引玉,欢迎交流!
项目展示https://www.bilibili.com/video/BV16S4y1S7GU?share_source=copy_web
总览
总体使用有限状态机实现,包括状态内处理和状态转换两部分。
为表述清晰,后文将钩锁连接在人物一端称为A端,发射出去的一端称为B端
钩锁利用UE4自带的Cable组件实现,比较重要的是两个参数
Location
和End Location
分别为钩锁两端的位置,我们利用前者作为B端,后者作为A端
有限状态机:
转换箭头的两侧分别为状态转换的条件和状态转换时进行的(主要)操作,高亮为输入信号
包含四个状态:其他状态、瞄准状态、钩锁发射状态、人物移动状态
其中后三个状态内皆需要进行状态内处理(每帧):
瞄准状态:
进行射线检测,检测距离内钩锁能否命中,若能命中则改变准星的形状
钩锁发射状态:
每帧改变钩锁B端的位置,实现发射的效果
人物移动状态:
- 由于钩锁在
ThirdPersonCharacter
内,因此随人物移动,钩锁也会改变位置,所以要根据人物移动改变钩锁位置,实现钩锁B端的固定效果 - 随人物向钩锁B端移动缩短钩锁长度
- 给人物一个朝向钩锁B端的速度,使之朝B端移动
- 检测移动过程中是否被阻挡
实现细节
瞄准
瞄准逻辑
实现按Q键进行瞄准,当钩锁能够命中时改变准星的形状,瞄准时缩小Field Of View
因为牵扯到HUD的变化,我们用蓝图接口传递两个布尔变量到HUD,分别表示是否在瞄准状态和钩锁能否命中。根据这两个变量值决定是否绘制准星和准星的形状
HUD蓝图:
瞄准时缩小视角利用两个事件来控制,以便当视角变化到一半停止瞄准也能正常回到正常视角而不是跳变
瞄准的输入控制
与其他输入不同,瞄准的输入在钩锁发射和人物移动过程中是要关闭的(发射钩锁时让视角回到正常状态)
利用一个Gate
实现输入控制,同时还可以进行与HUD蓝图的通信
状态0–其他状态
状态0内不需要做任何处理,只需根据输入转换状态即可
状态1–瞄准状态
状态内处理
状态1中需要进行射线检测,检测射程内钩锁能否命中,并将检测结果以变量的形式保存下来,命中结果发送给HUD
状态转换
两种情况,一种松开Q键回到状态0,一种进入钩锁发射状态
进入钩锁发射状态时需要顺序执行四个操作
- 关闭瞄准状态
- 设置钩锁B端的位置(若命中则设置为命中位置,未命中则设置为最远距离
- 改变角色朝向,令角色朝向摄像机位置
- 播放钩锁发射的动画,为保证发射动画过程中角色处于静止,此处将
Movement Mode
设置为None
状态2–钩锁发射状态
状态内处理
在钩锁移动完成之前,需要每帧更新钩锁B端位置,以实现发射的动画效果,使用VInterp To
节点实现平滑过渡
状态转换
钩锁移动完成后,首先改回Movement Mode
- 若未命中则收回钩锁后回到状态0,同样使用
VInterp To
节点
- 若命中则进行一次跳跃并进入状态3
其中Do once
节点通过Reset Hook
事件重置
此事件用于重置相关变量,便于下次的钩锁发射
状态3–人物移动状态
状态内处理
人物移动完成前
- 需要每帧改变钩锁B端的位置,以保证钩锁B端在世界坐标下的固定效果
- 随着人物的移动缩短钩锁的长度
- 给人物一个向着钩锁B端位置的速度,移动人物。其中这个速度越靠近B端越小
- 检测前方是否有阻挡,若有阻挡,需将人物的移动速度降低
状态转换
三种情况下人物移动完成,重置钩锁,回到状态0
- 按下空格,主动终止,此时需降低人物速度
- 有物体阻挡
- 人物离钩锁B端够近
结语
至此就完成了一个类似永劫无间的钩锁系统了,在此基础上还可以加上攀爬系统,并设置二段跳实现更灵活的移动
参考资料
https://www.bilibili.com/video/BV1Zt411D7Zt?share_source=copy_web
攀爬系统:https://www.bilibili.com/video/BV1yb4y1o7BY?share_source=copy_web
[UE4]虚幻4蓝图实现类似永劫无间的钩锁系统相关推荐
- ue4 曲线图实现 蓝图_UE4虚幻引擎蓝图制作自动开关门(超详细图文教程
原标题:UE4虚幻引擎蓝图制作自动开关门(超详细图文教程 自己花费了一天多的时间来编写和整理这篇图文教程,相信看了后能轻松学会使用蓝图制作会自动开关的单开门的,大家可以举一反三,尝试使用蓝图制做双开关 ...
- UE4虚幻引擎开发手机游戏
该文章来自用户转载 点击阅读原文 UE4虚幻引擎作为游戏开发引擎之一,在很多项目中都会使用到.下面就给大家分享下如何使用UE4开发高品质的手机游戏. 作者介绍 大纲 •介绍 •UE4 针对3A级手游的 ...
- 虚幻4蓝图快速入门(一)
蓝图快速入门 序言 本文依据官方教程总结而来,只是带你对蓝图有一个快速的认识,如果想对蓝图有一个比较深入的了解,那么可以看官方的视频或者是做一些小项目练手,如果你有编程经验的话,上手还是很容易的. 蓝 ...
- 揭秘 MWU 最佳画质游戏《永劫无间》技术历程
近日知名人工智能计算公司英伟达(Nvidia)发布了一部"第一款使用 DLSS 技术的 Unity 游戏"<永劫无间>DLSS 宣传片. DLSS 技术能渲染低分辨率的 ...
- ue4怎么用虚幻商城场景_【更新】UE4虚幻引擎野外场景制作零基础入门教程
原标题:[更新]UE4虚幻引擎野外场景制作零基础入门教程 作为一套零基础入门教程,可以帮助虚幻4引擎的新手了解到环境制作流程和相关软件的配合.本教学适合零基础入门用户,不适合有一定经验的UE使用者. ...
- UE4 虚幻4游戏程序编程开发零基础视频教程
UE4虚幻腾讯课堂丁树凯丁老师游戏程序编程开发零基础视频教程. 目录: 第01季:虚幻4基础操作 第02季:用UE4蓝图制作FPS 第03季:面向对象思想在UE4蓝图中的应用 第04季:UE4中的人工 ...
- UE4虚幻引擎关于小地图制作教程
UE4虚幻引擎关于小地图制作教程 首先,要做一个这样子的效果! 怎么做呢! 首先,我们要准备UI! 小地图,我们的分辨率是512x512 记住参数! 然后在MainUI当中!我们就可以这么设置! 一个 ...
- 虚幻四蓝图知识点汇总(Base)
文章目录 前言 蓝图类结构 比对代码结构 事件图表 函数 函数创建 纯函数 调用 宏 事件 变量 继承 多态 实例 引用区分 手足/起源问题 总结 前言 前面我们对蓝图的操作有了大概的认识,那么接下来 ...
- 【学习笔记】Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞教程
教程链接:Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞 想共享的小伙伴可以E-mail我:lxbcolorgalaxy@qq.com 目录 第一章 常见的物理现象及分析 1蓝图模板中的 ...
最新文章
- Qt利用avilib实现录屏功能_利用“别名”实现Sendmail的邮件群发和邮件备份功能...
- c++不允许使用不完整的类型
- oracle 按某个字段分类汇总,[数据库]Oracle语句分类汇总
- 第八章 Python 对象和类
- intouch负值显示0_excel表格数据为负值取0-在EXCEL表格中怎么把负数显示为0?公式怎么设置?...
- java获取spring数据源_Spring动态注册多数据源的实现方法
- ansi c标准_C语言为什么需要有标准库
- 图解HTTP笔记(一)
- React Mixin
- 2021-06-06滚动条de面板
- 动网论坛 php版,动网即将推出第二代PHP版本论坛系统
- 第六届蓝桥杯A组C/C++ 第三题 奇妙的数字
- Python-Curses模块
- 唯一标识 微信小程序_微信小程序中用户唯一ID的获取
- 【Linux驱动开发】PS2游戏手柄驱动开发与输入子系统框架
- 数字孪生智慧高铁研究案例
- 设计模式六大原则详解
- 【Python全栈测试开发实战1】搭建测试开发环境
- PHP经典实例读书笔记--变量
- Elesticsearch基础