阿赵UE学习笔记——18、声音播放

本文介绍了如何在虚幻引擎中导入声音文件(重点是wav和mp3的区别),使用SoundCue播放声音,并通过蓝图实现循环、延迟、随机播放和音高音量变化等功能。

  大家好,我是阿赵。
  继续学习虚幻引擎的用法。这次学习一下声音的播放。

一、声音的导入

  接下来先做一个实验,我自己弹了一段音乐,录音之后保存成2种格式,分别是mp3和wav:
在这里插入图片描述

  然后把这两个文件放到UE项目的文件里面,打开UE时,UE会提示检测到1项内容文件变更。注意,我们放了2个文件,只提示了有1项内容变更。
在这里插入图片描述

  点击导入之后,会发现只有一个音波文件出现在内容浏览器里面。
在这里插入图片描述

  双击打开这个音波文件的属性,会发现这个文件的源文件是wav文件。
在这里插入图片描述

  这里得出了2个结论:
  首先,似乎只有wav文件是能导入UE引擎使用,mp3文件似乎是识别不了。
  然后,UE的习惯是导入后的文件是会生成一个uasset文件,真正使用的也是这个uasset文件。

二、Sound Cue

  对比一下Unity引擎,如果刚才导入的音波文件相当于Unity引擎的AudioClip,需要把AudioClip播放出来,Unity引擎里面还需要一个AudioSource。所以在UE引擎里面,想把音波播放出来,也是需要一个载体,在UE里面这个载体叫做Sound Cue。
  创建Sound Cue的方法有2个:

1.内容浏览器里,创建——音频——Sound Cue:

在这里插入图片描述

这样会创建一个空白的Sound Cue文件,可以自己命名。
在这里插入图片描述

双击打开这个Cue文件,会发现里面只有一个Output输出节点:
在这里插入图片描述

2.直接在音波文件上右键——创建Cue:

在这里插入图片描述

这样创建出来的Cue,是和之前的音波文件一样的命名,
在这里插入图片描述

然后双击打开这个Cue文件,会发现在里面已经拖进了音波文件,并且连接到了Output节点。
在这里插入图片描述

三、简单播放声音

  如果只是想在场景里面播放指定的音波文件,那是非常简单的,直接把Cue文件拖入到场景就可以了:
在这里插入图片描述

  但会发现一个问题,这个声音只会播放一次,不会循环播放,然后没有任何控制声音的方法。

四、声音蓝图

  为了控制场景里面的声音播放,这里简单的介绍一下声音蓝图的用法。
首先解决一个令人害怕的问题,蓝图是什么?
  如果用过Unity的Animator的朋友,会有一个印象,Unity的Animator系统,可以通过设置条件,让一个动画节点跳转到另外一个动画节点,并且可以调节节点与节点之间的过渡时间等效果。
  然而Unity的Animator功能就只限于此,它的节点都是动画状态,连线都是条件。而虚幻引擎的蓝图系统,是在这个基础上,让功能更强大和随意。比如每个节点的类型是不固定的,可以是资源,可以是功能函数,等等,通过不同节点之间的连线来达到一定的效果。不同系统的蓝图有所区别,比如现在要用的声音蓝图,或者以后会说的动画蓝图,材质蓝图,或者控制游戏逻辑的场景蓝图之类,每一种不同的蓝图,它的选项和可以使用的函数都会不一样。
  简单来说,蓝图系统,是不需要写代码编程就可以控制各自系统的连线系统。
  好像很复杂,接下来试试:

1、添加循环播放功能:

  在Cue蓝图编辑器里面,右键,搜索循环,找到“正在循环”,并添加到蓝图里面:
在这里插入图片描述
  UE的中文版使用起来最大的问题是名字的不统一,刚才我们搜索的节点名字是叫正在循环,但实际上出现在场景里面的节点是Looping,把音波节点连到Looping节点,然后Looping的输出连接到整个蓝图的输出:
在这里插入图片描述

  这个时候,就会发现,在场景里面播放的音乐已经会循环播放了。

2、添加随机延迟功能

  如果觉得循环播放时上一次的播放一结束下一个播放就立刻开始,会显得很呆板,可以加入一个延迟节点,搜索“延迟”,添加一个Delay节点。
在这里插入图片描述

  然后连接在一起,把Delay节点放在循环节点前面:
在这里插入图片描述

  想测试连接的效果,可以直接点播放Cue来试试:
在这里插入图片描述

  在播放的过程中,蓝图节点之间的连线会有动画效果显示正在运作的节点和过程:
在这里插入图片描述

  实际试了一下之后,会发现这时候声音是循环的,但每次循环播放之前,会随机的等待一个时间。这对于做一些比如鸟叫或者嘈杂音的效果,就比较的好用,可以随机每隔一段时间出现一次声音播放。

3、添加随机播放功能

  进一步对声音进行随机效果,比如我需要播放的声音采样不止一个,而是有很多个,我每次想播放的时候,希望是随机播放一个,那么就可以添加一个随机节点
在这里插入图片描述

  搜索“随机”,添加一个Random节点:
在这里插入图片描述

  假设声音有很多个,然后全部输入Random里面,再把Random的输出连到原来的Delay输入接口。
  这个时候播放测试,会发现在提供的多个音波里面,随机一个进行播放:
在这里插入图片描述

4、添加随机音高音量功能:

  有时候采样的音源数量不够多,比如只有3个,但我们又想它们每次播放的时候都有一些变化,这次可以加入一个连续调制器:
在这里插入图片描述

  搜索“连续调制器”,添加一个Continuous Modulator节点:
在这里插入图片描述

  选择Continuous Modulator节点,给音高和音量设置一些最大最小值:
在这里插入图片描述

  这次再测试播放,会发现每次的声音的音高和音量都会发生一些变化。这样结合着一定数量的音频采样,就可以随机播放出非常丰富的声音效果了。

<think>嗯,用户想要了解UE5中的蓝图基础,特别是键盘和鼠标操作移动。首先,我需要回忆一下UE5的相关知识,确保自己掌握正确的信息。蓝图系统是UE的核心视觉脚本工具,对于没有编程背景的用户来说特别友好。 用户提到的键盘和鼠标操作移动,应该涉及到输入事件的绑定和如何通过蓝图处理这些输入。可能包括移动角色、旋转视角这些基础操作。首先,我需要分解步骤:如何设置输入轴映射,如何在蓝图中获取这些输入值,然后应用到角色移动上。 键盘操作通常涉及WASD键控制前后左右移动,而鼠标移动控制视角旋转。在UE中,这些通常通过“输入轴”来配置。可能需要指导用户进入项目设置,添加轴映射,比如“MoveForward”绑定W和S键,Scale分别为1和-1,类似地处理左右移动。鼠标方面,需要设置水平轴和垂直轴的鼠标X和Y输入。 接下来是蓝图部分,特别是角色蓝图中如何获取这些输入值,然后应用移动和旋转。Character类自带了移动组件,所以可能需要使用Add Movement Input和Add 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`创建复合输入事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值