阿赵UE学习笔记——20、角色蓝图和动画蓝图

阿赵UE学习笔记目录

  大家好,我是阿赵。
  继续学习虚幻引擎的使用。这次来看看角色控制动画相关的东西,主要用到了动画蓝图和角色蓝图。

一、动画蓝图

  之前分析过,蓝图对于虚幻引擎来说,是存在于各个系统里面的,相当于是各个系统的控制器。所以动画蓝图就是控制动画播放的一种控制器

1、创建动画蓝图

  创建动画蓝图有2种方式:

1.通过骨骼网格体创建

  在内容浏览器里,找到一个想控制动画的骨骼网格体,然后右键——创建——动画蓝图:
在这里插入图片描述

  这样就会以这个骨骼为基础,创建一个动画蓝图文件。

2.通过创建选项创建

  在文件浏览器里面,不选中任何文件,直接右键——动画——动画蓝图:
在这里插入图片描述

  因为动画蓝图是必须和骨骼网格体绑定的,所以这时候会弹窗,让我们选择一个骨骼网格体:
在这里插入图片描述

  创建好的动画蓝图文件,预览图就是选择的骨骼网格体,比如我这里选择的是钢铁侠的骨骼网格体:
在这里插入图片描述

2、编辑动画状态机

  双击打开动画蓝图,会发现左边有预览窗口和各种可编辑的组件,中间是一个节点编辑器,右边是各种属性编辑面板,比如细节面板、动画预览编辑器和资产浏览器。
在这里插入图片描述

  在中间的节点编辑区域,默认只有一个输出节点,我们鼠标右键,搜索状态机,新建一个State Machine节点:
在这里插入图片描述
在这里插入图片描述

  这里我只打算给角色添加一个待机的状态机,先不做任何的动画状态切换,所以直接把状态机输出到Output Pose的Result接口:
在这里插入图片描述

  接下来双击状态机节点,进入到状态机编辑:
在这里插入图片描述

  会发现这里只有一个Entry节点,然后可以从右边的资产浏览器,把需要的动画拖进来。我这里拖入一个待机的动画,并把节点名称改成idle:
在这里插入图片描述

  然后把Entry节点连到idle:
在这里插入图片描述

  回到动画蓝图的窗口,这里需要注意一件事情,UE里面的所有蓝图,在修改完之后,都需要点击保存,然后点击编译按钮,才会真正的生效。
在这里插入图片描述

  在编译之后,会发现左上角的预览窗口出现了刚才拖动进去的动画,然后中间的状态机和输出之间的连线动了起来,这是在告诉我们蓝图的节点运行情况。

二、角色蓝图

1、Actor的概念

  在UE里面,所有能在场景里面显示的对象,都是一个Actor。这个概念有点像Unity里面的GameObject,但又有所不同。
  Unity里面,一个GameObject显示在场景里面之后,如果需要控制它,还需要在GameObject上面挂一个继承了MonoBehaviour基类的C#脚本,然后想把它保存下来,还需要创建Prefab。但在UE里面,Actor就包含了Unity的GameObject+MonoBehaviour+Prefab的功能了。只要创建Actor,然后在Actor里面可以编辑模型、动画甚至功能逻辑。然后把Actor本身就是一个资源,可以直接反复的拖动到场景里面使用。

2、创建角色蓝图

  在内容浏览器里右键——蓝图类
在这里插入图片描述

  接下来会弹出窗口,让我们选择这个蓝图类的父类:
在这里插入图片描述

  可以看到,UE内置了非常多的带有功能性的蓝图类,最基础的是Actor,然后其他的不同蓝图类会自带有各种不同的基础功能。
  我们可以通过创建最基础的Actor类,然后自己扩展功能,也可以直接使用一些UE已经带有的类来简化开发过程。比如这次我选择的角色类蓝图,里面就包含了角色控制相关的逻辑功能在里面了。
  创建完的角色蓝图类,暂时是空白的,给它起个名字:
在这里插入图片描述

3、指定骨骼网格体和动画

  双击打开之后,会发现中间有一个胶囊体,还有一个指示方向的箭头。左变是各种组件和函数,右边是细节面板。
在这里插入图片描述

  在细节面板,把钢铁侠的骨骼网格体拖动到网格体的选项里,会发现有一个钢铁侠的模型出现在胶囊体的上面
在这里插入图片描述

  不过这个时候钢铁侠和胶囊体并不是重合的,可以通过调整钢铁侠的位置,还有调整胶囊体的大小,让模型和胶囊体匹配:
在这里插入图片描述

  再旋转网格体,让方向和箭头一致:
在这里插入图片描述

  在细节面板找到动画——动画类,把刚刚做好的动画蓝图指定在这里:
在这里插入图片描述

  这个时候,角色动画已经生效了,编译完成后,角色蓝图中间就出现了刚才做的动画蓝图里面指定的待机动画:
在这里插入图片描述

4、添加摄像机

  假如我们是要做一个第三人称射击游戏,需要一个摄像机跟随着角色后,可以这样做,在组件页签里面,点添加,搜索弹簧臂组件。弹簧臂的作用类在截图里面有说明,类似于一个第三人称摄像机的控制距离功能:
在这里插入图片描述

  再在创建出来的弹簧臂组里面创建一个摄像机组件:
在这里插入图片描述

  创建完之后,会是这样:
在这里插入图片描述

  然后调整一下弹簧臂的位置,让摄像机看着角色后脑勺:
在这里插入图片描述

5、设置默认玩家控制:

  在角色蓝图的细节面板,找到Pawn——自动控制玩家选项:
在这里插入图片描述

  默认的选项是已禁用,这里选择成玩家0:
在这里插入图片描述

  保存并编译蓝图,把这个角色蓝图拖动到地形场景里面,然后运行,会发现游戏的视角已经变成了第三人称,看着钢铁侠的背后:
在这里插入图片描述

<think>嗯,用户想要了解UE5中的蓝图基础,特别是键盘鼠标操作移动。首先,我需要回忆一下UE5的相关知识,确保自己掌握正确的信息。蓝图系统是UE的核心视觉脚本工具,对于没有编程背景的用户来说特别友好。 用户提到的键盘鼠标操作移动,应该涉及到输入事件的绑定如何通过蓝图处理这些输入。可能包括移动角色、旋转视角这些基础操作。首先,我需要分解步骤:如何设置输入轴映射,如何在蓝图中获取这些输入值,然后应用到角色移动上。 键盘操作通常涉及WASD键控制前后左右移动,而鼠标移动控制视角旋转。在UE中,这些通常通过“输入轴”来配置。可能需要指导用户进入项目设置,添加轴映射,比如“MoveForward”绑定WS键,Scale分别为1-1,类似地处理左右移动。鼠标方面,需要设置水平轴垂直轴的鼠标XY输入。 接下来是蓝图部分,特别是角色蓝图中如何获取这些输入值,然后应用移动旋转。Character类自带了移动组件,所以可能需要使用Add Movement InputAdd Controller Yaw/Pitch Input这些节点。需要注意的是,鼠标旋转可能涉及到控制器的旋转,而角色移动则是基于控制器的方向。 用户可能有疑问的地方包括:如何正确连接轴事件到移动节点,如何处理旋转的速度,可能还需要调整输入灵敏度。另外,是否需要开启鼠标显示或锁定光标的位置,比如在游戏模式下隐藏光标,这样鼠标移动可以控制视角而不受限制。 还有可能涉及到的问题,比如角色移动的方向是否与摄像机方向一致,这时候可能需要使用Get Control Rotation来获取控制器的旋转,并计算移动方向。如果用户遇到移动方向不正确的问题,可能需要检查是否使用了正确的旋转向量。 另外,用户可能需要了解如何测试这些输入设置,比如在游戏模式下运行查看效果,以及如何调试蓝图逻辑,例如打印输入值到屏幕,确保输入事件被正确触发。 需要提醒用户注意的一些常见错误,比如输入轴名称拼写错误,节点连接错误,或者没有正确设置pawn的自动控制玩家为Player0。这些都会导致输入无法被正确接收。 最后,可能需要给出一个完整的蓝图示例,展示从输入事件到移动旋转的完整流程,帮助用户更直观地理解。同时,推荐一些进一步学习的资源,如官方文档或教程视频,以便用户深入学习。</think># UE5蓝图基础:键盘鼠标操作移动 ## 一、输入系统配置 1. 打开`项目设置` → `引擎-输入` 2. 创建轴映射: - `MoveForward`:W(Scale 1.0)/S(Scale -1.0) - `MoveRight`:D(Scale 1.0)/A(Scale -1.0) - `Turn`:Mouse X - `LookUp`:Mouse Y ## 二、角色蓝图设置 ### 键盘移动实现 ```cpp // 事件图表 Event Tick → Get Axis Value(MoveForward) → Add Movement Input(GetActorForwardVector()) Get Axis Value(MoveRight) → Add Movement Input(GetActorRightVector()) ``` $$ \text{移动向量} = \text{输入值} \times \text{方向向量} \times \Delta Time \times \text{移动速度} $$ ### 鼠标视角控制 ```cpp // 事件图表 Event Tick → Get Axis Value(Turn) → Add Controller Yaw Input Get Axis Value(LookUp) → Add Controller Pitch Input ``` $$ \text{旋转角度} = \text{输入值} \times \text{灵敏度} \times \Delta Time $$ ## 三、关键参数设置 1. 移动速度:建议初始值600-1200 2. 鼠标灵敏度:推荐X轴0.5-1.5,Y轴0.3-1.0 3. 摄像机限制: - 俯仰角限制(-70°~70°) - 使用`ClampAngle`节点 ## 四、常见问题解决 1. 角色不移动: - 检查Pawn的`Auto Possess Player`是否设置为Player0 - 确认角色碰撞体设置 - 验证移动组件是否启用 2. 鼠标控制失效: ```cpp // 在玩家控制器中设置 bShowMouseCursor = false bEnableClickEvents = false bEnableMouseOverEvents = false ``` ## 五、进阶技巧 1. 输入平滑处理: $$ \text{平滑输入} = FMath::FInterpTo(\text{当前值}, \text{目标值}, \Delta Time, \text{插值速度}) $$ 2. 移动预测: ```cpp Predict Projectile Path By ObjectType → 绘制移动轨迹预览 ``` 建议结合`Enhanced Input`插件实现更复杂的输入处理,可通过`Input Action`创建复合输入事件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值