由于这个视频比较老,我又是个新手,所以我们这边选择4.27.2的版本进行学习,反正对于初学者都差不多,然后下面是我的一些笔记,问题的记录和一些额外的理解
2024.3.27:
首先创建一个第三人称的游戏项目,加入初学者内容包,然后创建一个新的关卡
删除这个平面,然后用地编模式创建一个平台,加入草地材质
然后,删除玩家出生点,将光源设置为可移动,为了方便管理我们的项目,我们还需要创建多个文件夹,如图所示(后续还有其他文件夹,包含不同的资产)
在Human中创建一个pawn的蓝图类,改名为Ch_Human
然后knight是我们的一个人物的名字,模型需要从mixamo 中下载,我们下载一下模型个和一个动画
!!!:这边有一个很奇怪的问题出现了,就是我开始使用的版本是5.3.2,但是导入这个模型时一直卡死,导入不进去,试了很多遍,然后我才换了4.2.7的版本才成功,这样学起来也少费很多劲
导入动画的时候要选择k_night的骨骼
然后,我们在Ch_Human中,进行模型还有摄像机的插入,人物朝向要正确
然后,我们把游戏模式改为第三人称,默认pawn类改成我们的Ch_Human,然后,在第三人称人物蓝图中,把我们的鼠标输入复制到我们的Ch_Human中
然后我们需要在Ch_Human pawn中取消勾选一个选项,在camera中勾选一个选项,第一个的功能时,当控制器旋转时,会控制Yaw,使pawn跟着转,第二个的意思是,当控制器旋转时,摄像机会跟着旋转
然后,我们在Ch_Human中的mesh中添加一个动画,将动画模式改为使用动画资产,并添加下载好的动画,就可以使pawn播放我们的动画
然后我们继续将Move input复制到我们的Ch_Human中,我们来讲解一下这个蓝图的意义,
首先是输入开始,分别是forward和right,获得移动轴,这边,我们按下WS分别返回1和-1,DA分别返回1和-1,然后根据世界方向和target,我们的添加移动输入节点会让我们的pawn实现平移的效果,中间的部分部分是根据pawn的实时旋转,获得任意时刻的Yaw旋转量,然后以这个旋转体为基准传出向前和向右的向量,以此为world direction,从而实现移动
2024.3.28:
然后,这个物体实际上只实现了站着平移的效果,下面我们根据他跑的速度来添加动画
在mixamo中下载这些动画并导入
冲刺 站立 左走 右走 跑步 走路 往后走
然后,我们用混合空间来实现动画的渐入渐出的效果
创建一个混合动画并改名,在左边设置,因为人物移动的最大速度是600,所以我们将水平轴值,垂直轴值设置为600和-600,网格分区都设置为12,这样就可以具体设置不同状态下渐入渐出的动画
然后再操作台上面,把动画资产拖进去,设置不同值对应的动画,然后会自动混合
然后,我们不能够直接使用这个动画,因为还有许多交互没有实现,所以我们来创建一个动画蓝图,并在动画图表中,把混合动画拖进去,将两个量提升为变量,以便调用
然后在事件图表中进行交互功能的实现,其中的水平速度和垂直速度只是我们命名的,并不能创建之后就直接获取,所以我们要根据pawn的移动,来将其赋值到我们的这两个变量中
首先我们要获得pawn,以便获取其内部的变量
这里我们获得了我们的BP变量,这里我们每帧都调用这个事件,获取速度,向前,向右的向量(因为向前和向右是正方向),然后dot是两个向量的点乘,这样就可以获得两个方向的分量,即为所求
然后还有一个小问题,就是人物行走时,不会看向行走的方向,这里点开pawn的蓝图类,将旋转朝向运动,就是当运动的时候,随时把正方向旋转到我们的移动方向虽然这样有点感觉左右后的行走动画白费了
记录遇到的问题,下载动画的时候,一定要选择 in place这个选项,不然混合的时候就会出错,人物会瞬移出去
2024.3.29:
现在,我们来实现caps lock键切换跑步和慢走还有按住shift冲刺的功能
首先,在输入中添加两个动作映射
动作映射和轴映射是在键输入和行为之间插入一个间接层,方便地将键和轴映射输入到行为中,其中动作映射存在按住和松开,轴映射具有连续的范围
然后打开我们的人物蓝图
设置一个布尔值,Running,默认值是true
NOT:返回布尔值的补码,就是反着的,后面接了一个set,就是将布尔值设置成原本的补码
然后根据这个分支就可以设置最大速度,按下就调用一次
然后是按住shift加速,设置一个布尔值,sprinting,这里按住的时候是800,松开是600,同时将running设置为真,比较贴心,代表自己现在就在running,防止切换跑步出错
然后,我们需要使人物看着有加速和减速的效果
max acceleration:最大加速度
ground friction:地面摩擦
braking deceleration walk:制动减速行走(减速的加速度,没有加速度是减速)
这就设置好行走了
然后,我们为我们的人物添加跳跃效果和脚步声
首先,跳跃的滞空时间是不能确定的,所以添加跳跃动画就不能只是简单的插入和播放,我们需要通过创建动画蒙太奇来实现跳跃动画的近似实现
蒙太奇就是一种剪辑手法,这边,以及它的一般功能就是可以将一个动画分割,使创作者在需要的任何地方进行片段动画的插入
右键jump动画创建一个动画蒙太奇
然后是动画蒙太奇的使用方法
第一个是montage分组,可以在这个轨道的对应地方创建section
第二个是slot插槽,可以理解为一种标签,代表不同的片段
第三个是timing
第四个是notifies通知
第五个是curves曲线
后面三个以后再说
然后我们创建两个蒙太奇片段,以便进行使用
其中,我们需要实现的是,在空中使播放default部分,落地时播放落地动画
添加插槽,并在动画蓝图中添加这些节点
选择跳跃蒙太奇资产和开始部分的名字,即可
event on landed:当人物在地面上时,使用这个事件
然后,我们为走路跑步添加声音
这里,我们找到我们走路,跑步,冲刺,左走,右走,后走的动画,在左右脚踏上地面的时间添加notify时间,我们就可以在动画蓝图中调用这些事件,即当动画播放到notify这一帧时,进行事件调用
然后,我们需要实现的是,在动画蓝图中调用事件,事件是播放脚步声
在动画蓝图中,找到我们notify的事件
这里,如果我们在pawn的蓝图中自定义声音事件,再到动画蓝图中进行类型转换,就会增强事件的依赖性,类的耦合就会增强,不好修改,所以我们引入蓝图接口,来定义事件
蓝图接口:实现同类功能再不同actor中各自表达,其中只能进行定义,定义输入和输出,和actor类链接就能进行定义函数的调用
在里面进行函数名,输入和输出的定义
然后,和我们的类进行连接和事件实现
play sound at location:在某个坐标播放声音,这里我们获取我们pawn的坐标
然后在我们的动画蓝图中,我们就能实现脚落地时调用这个事件,播放声音
然后,我们导入我们的声音,为了 使我们的脚步声更加丰富,我们添加一个sound cue 同时导入三个音频,进行随机播放
然后,在pawn蓝图中,选中这个我们做好的音频,同时,我们需要创建一个音频衰弱设置,就是这个声音的渐变效果,能传播多远
设置声音衰弱开始的半径,超过这个半径,衰弱开始
声音的最远距离,超过这个距离就听不到声音
这样就设置好了我们的声音,同时记录一个很蠢的错误,一开始装上音频后,我很疑惑为什么我的脚步声是砸东西的声音,然后就顺着制作的顺序一直改,后来发现我装的不是设置好的音频,是初学者内容包里面的另外一个砸东西的音频