无限循环走廊实现
UE5 蓝图实现「无缝传送」:无限循环走廊的技术解剖 一个第一人称恐怖游戏 Demo 的核心机制:玩家穿过出口门后方的传送盒,被瞬间送回走廊起点——画面零跳变、速度不中断、方向不改变,同时整个世界在玩家眼皮底下完成一次”版本切换”。 本文拆解这套纯蓝图实现的完整方案:坐标重映射算法、蓝图节点链、与版本切换的同帧联动,以及让”无缝”真正成立的三个关卡设计条件。 一、问题:传送为什么容易穿帮这个游戏的核心体验是无限循环走廊:玩家沿着 C 形走廊走到尽头,开一扇门,走进去——发现自己回到了起点,但走廊里的内容已经变了。 普通的传送实现是 SetActorLocation——直接把人挪到目标点。这在一款要求”直行无感”的恐怖游戏里是致命的,因为传送瞬间有五件事会暴露它: # 执行要求 穿帮方式 1 视角连续 镜头跳变/闪帧,玩家立刻意识到”被传送了” 2 方向一致 传送后朝向不对:玩家向前走,落地却面朝墙 3 运动保持 速度清零或方向突变:正在走的人落地瞬间”顿一下” 4 光照一致 传送两侧明暗/色温不同,眼前一黑一亮 5 音频连续 环...
2026.9.4纯蓝图FPS项目总结
FPS 波次生存 Demo:UE5.8 纯蓝图项目的技术复盘 用纯蓝图完成一个 FPS 生存玩法闭环:射击 → 受击反馈 → 死亡流程 → 波次生存 → 灯光信号 → 击杀掉落。本文是技术向复盘,写给同样在用蓝图做游戏的人。 技术栈UE 5.8,零 C++ 纯蓝图。用到的系统:Enhanced Input、Animation Montage + AnimNotify、MetaSound、Timeline、UMG、AI MoveTo + NavMesh、Sphere Trigger。所有自研逻辑在 Content/Code 下按 Enemy / Pickup / Player / Weapon 分层;资产来自商城包。 十个技术亮点1. 手搓 FPS 相机臂(Enhanced Input + 每帧同步控制旋转)没有用现成的 Character 视角,而是自己搭了第一人称架构:七个 IA(移动/视角/奔跑/瞄准/开火/换弹/重开),IA_Look 的 X→AddControllerYawInpu...
2026.8.16纯蓝图FPS学习笔记
UE5 纯蓝图 FPS 实战笔记:命中判定、AI 追击与带冲量的布娃娃死亡 一个用 UE 5.8 纯蓝图(零 C++)完成的 FPS 练习项目。本文梳理三个核心系统的实现思路:武器命中判定、Whisper AI 追击,以及带冲量的布娃娃死亡效果。文中的蓝图节点名均可在编辑器里直接搜索复现。 一、先看整体架构项目逻辑全部放在 Content/Code/ 下,类关系非常简单: 1234BP_FPSPlayer (Character) ──BI_Fire接口──▶ BP_WeaponBase (Actor) ──继承──▶ BP_VIRTUS │ │ │ 射线检测 │ 命中后 Cast 并调用 └──────────────────▶ BP_Whisper (Character, AI 敌人) ◀──────────────┘ 三个系统围绕”一颗子弹”串联起来:扣下扳机 → 接口调用开火 →...
2026.7.28笔记
State Tree State Tree 的层级结构:Root → 守卫检查(Phase/Stagger/Death)→ 战斗行为(TacticalPause → StanceSwitch → AttackExecution → DefaultMovement),比 Behavior Tree 更接近状态机思维 State 与 Task 是分离的——画了树 ≠ 挂了任务,每个 State 的 Details 面板必须显式添加 Task Transition 条件可能静默卡死整棵树——State Tree 是线性流转,前面的 Transition 返回FALSE,后面全部不可达 STT(StateTreeTask)每次重入都新建实例——实例变量无法跨循环保持状态,这是和 Behavior Tree的关键差异 State Tree 安全限制:禁止直接引用关卡 Actor,必须用 GetAllActorsOfClass 或 EQS 绕行 数据驱动战斗设计Boss 系统采用完全数据驱动的架构。每个攻击、每个姿态都是独立的 DataAsset。 DA_Bo...
蓝图接口与事件分发器
蓝图接口:蓝图接口是虚幻引擎蓝图通信中非常重要且优雅的一环。它解决了一个核心痛点:如何让不同类型的对象,对同一个指令做出各自不同的反应,而发送指令的一方无需关心对方具体是谁。 核心概念:什么是蓝图接口?简单说,蓝图接口是一份函数声明列表,只定义函数的名称、输入和输出参数,没有任何函数体实现。 你可以把它理解为一个“合同”或“协议”: 接口本身说:“任何签署这个合同的类,都必须承诺可以实现一个叫‘打开’的函数。” 实现接口的类说:“我签署合同,并给出我自己的‘打开’方式。比如,门会旋转,宝箱会播放动画,灯会发光。” 它的关键特性在于,调用方无需知道对象的具体类型,只要知道它实现了某个接口,就能直接调用该接口的函数,并触发对象自己独特的实现。 为什么用它?两大核心作用: 解耦类型,实现通用交互 这是最主要的作用。比如“可交互”系统,玩家按下E键时,角色向前发射一条射线,检测到的物体可能千差万别。如果不使用接口,你可能会这么写: 12345678// 伪代码:糟糕的写法如果 (被击中物体 是 门) {调用“开门”函数} 否则 如果 (被击中物体 是 宝箱) ...
2026.7.17笔记
角色死亡布娃娃效果核心思路: 将角色从“动画驱动”瞬间切换为“物理模拟驱动”。关键点在于关闭动画对骨骼的控制权,让物理引擎接管,同时切断摄像机碰撞和角色移动逻辑。、 实现步骤(蓝图): 创建死亡事件(BP_Character) 在角色蓝图事件图表中新建自定义事件,命名为 Dead。 拖出角色的网格体(Mesh)引用,调用 Set Simulate Physics 节点,将 Simulate 勾选为 True。原理:此操作会激活物理资产(Physics Asset),让骨骼按物理规则运动。 触发死亡(BP_Sphere) 在关卡中的机关蓝图(如 BP_Sphere)里,给球形碰撞体添加 On Component Begin Overlap 事件。 从 Other Actor 引脚拉出 Cast To BP_Character(类型转换),确保触碰的是角色。 转换成功后,调用角色蓝图中的自定义事件 Dead。扩展:可在此处添加伤害计算逻辑,或替换为武器碰撞/射线检测来触发。 配置物理资产(Physics Asset) 在角色网格体的细节面板中,绑定物理资产(P...
第三人称角色动画
配置角色运动动画在UE5里为第三人称角色制作动画,核心是理解动画蓝图(Animation Blueprint)。它负责根据角色的状态(如速度、是否在空中)来决定播放哪段动画,并让过渡流畅自然。 简单来说,整套系统的工作流通常包含这几个关键部分: 创建混合空间,在水平坐标中配置好角色的移动速度,动画平滑。将移动资产添加到混合空间中。混合空间之所以叫混合空间,是因为它能把多个动画混合在一起,组成一套完整的角色动画,让它们之间能够进行一个丝滑的过渡。 创建动画蓝图,将混合空间添加到动画蓝图中。通过事件图表来实施将速度传递进混合空间播放器,从而播放动画。 在获取pawn拥有者后添加获取移动组件,因为角色的速度是存放在这里的。在获取一个速度(会记录角色往哪个方向移动),为了把这个方向过滤掉,所以还要添加一个获取向量长度的节点(XY),并将输出的参数保存起来,创建一个变量speed。 将获取到的速度传递给混合空间播放器,从而完成配置。 完成后记得将动画蓝图与角色绑定。 角色跳跃动画跳跃不是单纯地播放动画,而是由“起跳 ➡ 空中 ➡ 着陆”三个状态组成的连贯动作序列。 基础...
常用流程控制节点
流程控制节点是用于控制蓝图执行顺序和逻辑分支的节点,就像编程中的if—else语句和循环。 分支节点在UE5蓝图中,分支(Branch)节点就是if判断——根据条件决定程序走那条路。 输入:Condition(布尔值,True/False) 输出:True(条件为真执行)和False(条件为假执行) Flip Flop在UE5蓝图中,Flip Flop(触发器)节点是一个交替开关——每次执行它,都会在A和B两个输出之间来回切换。 第一次执行:走A 第二次执行:走B 第三次执行:走A(循环往复进行……) 如设置控制门的开关,或角色的下蹲。 Do Once在UE5蓝图中,Do Once节点的作用就是只执行一次,只有第一次会触发执行,后续调用全部被忽视。 首次执行:走Completed输出,同时内部的“锁”被关上。 后续执行:什么都不走,直接跳过。 重置:调用Reset输入引脚可以重新解锁,让下一次执行生效。 序列在UE5蓝图中,序列节点的作用是按照顺序执行多个引脚(可添加)。 顺序执行:顾名思义。 全部执行:每个引脚都会走一遍。 同步执行:虽然引脚有编号,但引...
角色视角旋转以及自动门功能的实现
第一人称视角旋转在UE5中实现视角旋转,最核心的机制就是将鼠标或摇杆的输入,转化为对摄像机旋转(Yaw和Pitch)的控制。根据游戏类型(第一人称、第三人称或RTS),实现方式略有不同,但都推荐使用增强输入系统(Enhanced Input System)。 实现步骤 捕获输入: 创建 InputAction 数据资产,类型选 Axis2D (Vector2D),用来读取鼠标横向(X轴)和纵向(Y轴)的移动值。 绑定事件:在角色蓝图或玩家控制器中,把输入操作和响应函数绑定。触发事件通常选 Triggered,这样鼠标移动时就会持续触发。 蓝图实现: 调出输入节点,节点触发事件选择Triggered,这样移动鼠标时就会持续触发。拉出引脚调出add控制器Yaw输入节点,通过更改Yaw的值来实现视角的旋转(z轴),同理添加Pitch输入节点(y轴)。从输入的 Action Value 节点拉出引脚,拆分为 X (Yaw) 和 Y (Pitch) 值,分别连接到 Add Controller Yaw Input 和 Add Controller Pitch Input 节点即可。 ...
UE蓝图编程基础及实现角色的移动功能
UE5蓝图编程是一种可视化的脚本系统,通过连接节点来创建游戏逻辑。事件开始运行 启动播放键后将会运行后面节点的逻辑代码。 事件Actor开始重叠 当有物体重叠到了actor上,执行后面的逻辑代码。 事件Tick actor生成出来后,每一帧执行一次后面的逻辑代码。 节点与引脚 具体连线方式上,执行引脚决定先后顺序,数据引脚传递具体数值。 逻辑思考靠的是变量存储数据(数字、布尔值、对象等),并通过函数和宏封装可复用逻辑。简单说,函数适合需要被继承重写或跨蓝图调用的逻辑,而宏更像“复制粘贴”的代码片段,可有多条执行出口。 角色移动准备角色蓝图 创建一个游戏模式:在Character中创建一个游戏模式基础(BP_GameMode)。 创建主角:在内容浏览器中右键,选择“蓝图类” -> “Character”(角色)。这个父类自带网格体、胶囊体碰撞和移动组件。 绑定模型:打开BP_GameMode,将创建的主角输入默认的pawn类中 此时主角已与游戏模式相关联,接下来还需要将游戏模式与项目场景进行关联。 设置输入映射 使用增强输入,该系统与旧代输入映射相比更加灵活,利于扩展。 ...










