资产配置
材质导入配置
一个材质
- 我们将下载好的资产fbx文件直接拖进,工程文件里面就行
- 然后创建好材质,将漫反射与法线拖入到材质蓝图中进行编辑,法线强度为1的时候就给法线强度,0的时候就没有法线
- 然后创建实例就可以把材质给网格文件
- 现在将动漫导入进来
多个材质
-
那就多创建几个材质实例,将其相当应的法线与漫反射添加上去
-
如果感觉眉毛不对,可以把材质的模式改成蒙版模式(masked模式)
动画蓝图配置
待机到行走
第一步
- 新建一个父类的character蓝图,然后将近战兵骨骼网格体指定到character蓝图中
- 右击近战兵骨骼新建一个动画蓝图与混合空间1D
- 打开混合空间1D,给轴值赋予最大值与名字,当在0位时给个站立动画,然后走路与奔跑的值自己定义,也可以在混合采样区自定义动画的速率与比率缩放
- 然后我们就可以配置动画蓝图,将刚才新建的动画蓝图给这个父类character
第二步
思路:我们打开动画蓝图开始进行配置状态机,首先在动画蓝图获取移动组件,然后判断是否获取到,获取到就提升为一个组件变量,通过这个组件获取到它的速率,获取到组件速率的模长提升为变量
- get component by class:获取某个指定类的组件
- get velocity:获取组件的速率
- 这里的get component by class里面的组件就是父类蓝图里面的角色移动组件
- 这里的get component by class里面的组件就是父类蓝图里面的角色移动组件
第三步
- 此时我们就可以来添加状态机了,然后在状态机中将混合空间1D添加进去,在混合空间1D中给予速率
- 用到的蓝图
- New State Machine:添加一个状态机
- 添加状态机
- 添加混合空间1D
- 给混合空间速率
受击动作
第一步
- 我们需要使用骨骼融合来进行编辑受击动作,首先将奔跑状态机保存起来,然后我们可以使用use cache pose进行调用我们完成好的状态机,我们需要添加一个bool变量来控制什么时候受击,此时的受击会影响全身,如果我只想让受击影响上半身就得需要状态混合
- use cache pose:调用缓存的状态
第二步
- 我们选择一个骨骼位置来只影响自己决定的位置,然后使用layered blend per bone,将骨骼位置添加在里面,然后准备进行混合
- layered blend per bone:让两个动画进行混合叠加
第三步
- 我们添加一个受击的状态机进行与运动状态机混合叠加,使用apply additive进行添加两个状态融合
- apply additive:使用添加两个动画
第四步
- 此时要是将状态机进行叠加,会产生问题,我们先将受击的状态机添加一个空状态,然后在空状态中添加一个空叠加additive identity pose
- additive identity pose:添加一个恒等位姿(空叠加)
第五步
-
原开始的运动状态机中的受击转换就可以先删掉了,因为一会要使用混合叠加的受击状态
-
找到动画中的受击动作,将其改为叠加模式,这里我们选择mesh空间,基础姿势选择动画帧姿势,将自己作为参考,这样这个动作就会变成一个叠加的受击状态
-
再将这个设置好的动作添加到受击状态机中,并且设置好受击变量的状态
-
此时我们就可以看到这个动作状态后面会有叠加的标志
-
将这个动画的循环播放取消
第六步
- 受击结束后,就让它回到没有受击的状态,我们可以在受击状态机中的受击状态自定义一个蓝图事件例如受击结束,然后调用这个这个事件来使受击bool为假
受击光效
第一步
- 想在受击上加一点颜色效果,我们可以在材质上他添加效果,然后在动画上调用这个材质的曲线,在材质中添加一个Fresnel,去乘以一个颜色,然后再乘以一个强度默认为0,这样就不会影响材质的效果,然后连接到自发光上
- fresnel:菲涅尔(Fresnel) 表达式根据表面法线与摄像机方向的标量积来计算衰减。当表面法线正对着摄像机时,输出值为0。当表面法线垂直于摄像机时,输出值为1。结果限制在[0,1]范围内,以确保不会在中央产生任何负颜色。
- 具体参考UE官方文档,虚幻官方文档
- 具体参考UE官方文档,虚幻官方文档
第二步
- 然后我们来到受击动画中,添加一条曲线,曲线的名字就是刚才我们新建的变量强度Intensity,直接在这个受击动画中调用这个数据,让动画上有一个受击的效果
- 编辑一下这个曲线,大概在第三帧左右加一个关键帧,5帧加一个,15帧加一个,提高5帧的值到100左右
- 打开曲线动画,打开这个动画曲线即可
死亡动作配置
- 先在状态机中使用blend poses by bool混合添加死亡动作,提升一个bool变量来控制死亡动作的触发
死亡动作溶解
- 我们提供一个F_Dissolve函数来进行材质溶解,将这个函数添加到M_char材质中,将Edge Sharpness(边缘锐度)与Dissolve(溶解)提升为变量,Edge Sharpness给个默认值3,让mask与DIssolveEdge相乘给到不透明蒙版,DissolveResult与一个颜色相乘DissolveColor(想要什么溶解颜色自定义)后与之前的受击光效最后强度的乘值相加
- 然后把Dissolve(溶解)默认值调到1.8就不溶解,这样就不影响材质。
- 回到死亡动画这里我们添加一个曲线为Dissolve,当在快死的时候也就是2帧左右吧,添加一个关键帧,之前的值为1.8也就是不溶解
- 最后到结尾的时候添加一个关键帧给-1也就是从2帧快死亡的时候后面开始溶解,然后打开Dissolve这个曲线
- 然后我们可以回到BP_父类蓝图中新建两个bool变量,死亡与受击,这样方便我们到时候重定向
- 有了这两个变量,然后去动画蓝图中将这两个变量存储起来方便后面调用