关卡 动画 蓝图 运行_[UE4]动画蓝图的编辑全流程(Animation Blueprint)

本文详细介绍了在UE4中创建动画蓝图的过程,包括 Blend Space 1D 的设置、动画状态机的配置、角色蓝图的创建以及解决Montage Slot问题。通过实例展示了如何编辑Animation Blueprint,设置Speed属性,实现角色的待机、行走和跑步控制逻辑,并讨论了在C++中播放动画时可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keyword: UE4、Animation Blueprin、Montage Slot、Character Blueprint

不知从从哪个版本开始,动画蓝图的制作和老版本之间的差距有点大了,这里做下笔记,以备不时之需。。

UE4版本:4.16

假设已经将模型和动作导入工程了,这里使用官方模板项目的动作作为例子讲解,只演示待机、跑步的控制逻辑,跳跃的可以看项目模板的动画蓝图。

1,准备好动作和模型

2,新建一个一个Blend Space 1D

然后在跳出的菜单钟选择骨骼

3,打开Blend Space 1D钟,分别将待机、行走、跑步三个动作拖拽到下方面板钟

修改驱动属性名为Speed,默认为None,这个属性名为是后面编辑动画蓝图使用的属性名。

最终效果:

4,将`TargetWeightInterpolationSpeedPerSec`修改为5.0,修改这个值的原因是为了让角色移动时的静止和移动的过度更加自然

5,新建一个动画蓝图(Animation Blueprin):

在弹出的菜单钟选择父类和骨骼,父类为:AnimInstance;骨骼就是当前模型的骨骼

6,打开动画蓝图的EventGraph面板

然后再添加一个float属性,名字为Speed,表示角色的即时速度

然后再编辑事件:Event Blueprint Update Animation

7,打开AnimGraph面板

新建一个State Machine

双击State Machine,进入里面编辑。从Entry节点钟拖拽并新建一个State:

将该State命名为Idel/Run

然后双击该State,进入里面编辑:其中Speed,就是之前新建float属性

最后再返回到最外层的AnimGraph面板,将StateMachine链接到Final Animation Pose上

8,新建角色蓝图Character Blueprint:

父类选择工程中的C++ Character class:

然后打开角色蓝图,选中mesh

将Anim Class指定为之前创建的动画蓝图:

将Skeletal Mesh指定为模型的骨骼:

如果默认的骨骼基准坐标、转向和刚体大小、MovementComponent的默认方向不匹配,则需要编辑下Mesh的Transform

9,到此,动画蓝图和角色蓝天编辑完成,可以在C++中使用刚刚新建的角色蓝图。

ATopDownTestGameMode::ATopDownTestGameMode()

{

// use our custom PlayerController class

PlayerControllerClass = ATopDownTestPlayerController::StaticClass();

// set default pawn class to our Blueprinted character

static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/TopDownCPP/Blueprints/NewBlueprint"));

if (PlayerPawnBPClass.Class != NULL)

{

DefaultPawnClass = PlayerPawnBPClass.Class;

}

}

补充:播放Montage的Slot问题

播放montage动画时,可能遇到播放动画没有反应的问题,例如,用C++的方式播放:

float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)

原因:

可能时没有指定Montage的Slot。

解决办法:

1,打开Montage动画,看下默认的Slot名字叫什么

2,然后在动画蓝图钟的AnimGraph中,拉出一个Slot节点

然后在从该Slot中连接到Final Animation Pose中:

如果想修改该Slot节点的Slot名字,可以在属性面变钟修改:

如何在C++代码中指定Montage的Slot名字,还没研究过。但是可以通过AnimSequence动态创建一个Montage对象,并指定Slot名字:

USkeletalMeshComponent *Mesh = MyActor->FindComponentByClass();

if (Mesh)

{

UAnimInstance *AnimInst = Mesh->GetAnimInstance();

if (AnimInst)

{

UAnimMontage* Mtg = AnimInst->PlaySlotAnimationAsDynamicMontage(MyAnimSequence, TEXT("MySlotName"), 0.1f, 0.1f, 1.0f, 30.0f);

}

}

<think>好的,用户想了解如何使用UE5纯蓝图进行单机游戏开发。首先,我需要确认用户的需求:他们希望使用蓝图系统,不涉及代码,专注于单机游戏。可能用户是刚入门,没有编程基础,所以需要详细的步骤和资源推荐。 首先,我应该回顾UE5的基本概念,确保用户了解引擎的基本操作。然后,蓝图可视化编程是关键部分,需要解释蓝图的作用和基本组件,如事件、函数、变量等。接着,单机游戏开发的核心系统可能包括角色控制、交互系统、UI和保存系统,这些都是用户需要掌握的内容。 接下来,用户可能需要具体的步骤指导,比如创建项目、设计关卡、实现角色移动和交互、添加敌人AI、设计UI和保存功能。每个步骤需要简明扼要,但足够详细,让用户能够跟随操作。同时,资源推荐也很重要,官方文档和教程视频能帮助用户深入学习。 还要考虑用户可能遇到的问题,比如性能优化、调试方法、如何扩展功能。这些常见问题可以作为相关问题列出,帮助用户进一步探索。此外,需要确保引用正确的参考资料,比如官方文档和推荐的教程视频,确保信息的可靠性。 最后,检查回答是否符合格式要求,使用正确的LaTeX语法,行内公式用$...$,独立公式用$$...$$,虽然在这个问题中可能涉及数学公式较少,但如果有性能分析中的计算,可能需要用到。同时,确保回答结构清晰,分步骤说明,并自然地添加引用标识。</think>### 使用UE5纯蓝图进行单机游戏开发的步骤指南 #### 1. **引擎基础与项目搭建** - **安装UE5**:从Epic Games启动器下载安装Unreal Engine 5.3+版本,需注册Epic账户[^2]。 - **创建项目**:选择“游戏”模板,勾选“仅蓝图”选项,确保项目类型为“单机”(不依赖网络功能)。 #### 2. **蓝图可视化编程核心** - **Actor与组件**:通过创建`Blueprint Class`(如角色、道具)定义游戏对象,使用组件(如`Character Movement`)实现物理逻辑。 - **事件与函数**:利用节点连接实现交互,例如按下按键触发跳跃事件: ```plaintext [输入事件 Jump] → [Add Movement Impulse] ``` - **变量与通信**:使用`变量`存储数据(如血量值),通过`Event Dispatcher`或`Interface`实现对象间通信。 #### 3. **单机游戏核心系统实现** - **角色控制系统**: - 导入第三人称角色模板(包含动画蓝图),通过`Input Action`绑定移动/攻击输入。 - 实现连招逻辑:使用`Timeline`节点控制攻击动画序列,例如: $$t_{attack} = f_{animation}(t) \cdot v_{combo\_scale}$$ - **交互系统**:添加`Sphere Trace`检测可交互物体,触发`Widget Interaction`显示提示UI。 - **关卡与存档**: - 使用`Game Instance`全局存储玩家数据。 - 通过`SaveGame`对象实现存档功能,关键节点: ```plaintext [Save Game to Slot] → [Serialize Actor Transform] ``` #### 4. **实战案例:ARPG单机Demo** 1. **场景搭建**:通过Quixel Megascans导入高质量素材,使用`Landscape Tool`构建地形。 2. **敌人AI**: - 创建`Behavior Tree`,设置巡逻、追击、攻击等任务。 - 使用`EQS`(环境查询系统)实现智能路径规划。 3. **战斗系统**: - 通过`Animation Notify`触发伤害判定框。 - 计算公式: $$d_{damage} = a_{base} \times (1 + r_{critical} \times p_{crit})$$ #### 5. **优化与调试** - **性能分析**:使用`Stat Unit`查看帧耗时,对高消耗蓝图添加`Profiling`标签。 - **调试技巧**: - 添加`Print String`节点输出变量值 - 使用`Breakpoint`暂停蓝图执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值