1、开始项目导入资源
创建一个包含新手包的Blank空项目,在StarterContent目录下创建一个MyCharacter目录用于保存模型和动画;
准备好动画资源,首先要导入的是骨骼(动画的导入成功的前提是项目中已经存在对应的骨骼)。
将指定文件拖入MyCharacter文件夹
因为拖入的文件时骨骼文件,所以不存在动画等其他一些资源,直接点击Import就行了
警告不用理睬,等待shader的初始化,完成后:
点击Save All保存导入的所有文件,然后新建一个Animation的文件夹,用于保存所有的动画资源。
将资源包里面其他所有文件都拖入进来
骨骼选择,之前导入的骨骼,然后点击Import All 导入所有动画
点击Save All 保存所有动画文件。
设置控制器输入,这里为了简便,主要设置电脑控制,wasd,空格,鼠标,不考虑移动端和手柄。
修改MyCharacter Event Graph蓝图
为了好看,简单修改一下Material颜色表现一下:
2、Blend Space 1D 一维混合空间
在Animation文件夹中创建Blend Space 1D,用于表示和定义Idle,Walk和Run动画之间的关系。
双击打开
在左侧,找到Axis Setting 并做如下设置
将右侧动画片段拖动到速度轴上面
3、动画蓝图 Animation BP
创建动画蓝图,并命名为CharacterAnimBp
双击打开动画蓝图
右键空白处,键入state machine,添加状态机,并且命名为locomotion,
双击状态机,进入,右键空白处,创建一个state,并将其重命名后,双击进入。
将右侧资源(第二部中准备得Blend Space)拖入进来,并连线
创建速度变量Speed,这个变量会在Event Graph里面被改变,从而控制动画
这时,切换到最外层,并连线
通过改变右侧的Speed值,可以看到左侧视窗中人物的动画变化。
进入状态机内,完成状态机
创建跳跃开始状态
设置跳跃开始动画
设置可以从混合空间包含的动画转换到JumpStart状态的条件,当绑定了该动画蓝图的Pawn在空中时,执行此起跳动画。
设置跳跃循环动画,并设置转换条件,动画过渡比率为0.5,
设置跳跃结束动画,并设置转换条件——当Pawn不在空中,也就是在地面的时候,播放此动画
连接结束动画和一维混合动画,并设置条件,比率为百分之十
在Event Graph中进行逻辑判断
- 当该动画蓝图附加给一个实例化的对象时, Set (Is In Air和Speed才会执行下去);
- 其中Try Get Pawn Owner 是尝试获取场景中存在的Pawn;
- Get Movement Component 是获取该Pawn的Movement组件,通过Movement组件判断该Pawn是否在空中;
- Is Falling正在下落,也就是不在地面,在空中时,返回true;
- Get Velocity获取Pawn的向量速度;
- VectorLength获取向量的长度;
4、MyCharacter角色蓝图之ViewPort
创建角色蓝图,命名为MyCharacter
双击打开MyCharacter,选中Mesh组件,在Details面板中修改Mesh和Animation,使用我们自己的骨骼,使用在第三步中创建的动画蓝图。
使用移动快捷键W,上下移动,得到合适的位置,使用旋转工具,让Character面向淡蓝色箭头
选中CapsuleComponent,在Details面板中修改Shape,使得Capsule Collision组件与Character差不多
添加相机,添加相机之前先给相机添加一个父组件Spring Arm,用于管理相机,修改名字,并在Details面板中的Camera Settings勾选Use Pawn Control Rotation,勾选之后,相机会跟随控制器旋转,这里,我们的控制器是鼠标
选中Movement组件,修改Jump Z Velocity为600,跳的时候,向上的速度就是600了
勾选 Orient Rotation to Movement,当角色发生旋转的时候,旋转的速度会使用上面设置的Rotation Rate
点击Class Defaults ,搜索controller,取消勾选Use Controller Rotation Yaw,使用控制器来旋转Z轴,这里我们会自己来控制,所以不需要勾选
5、角色蓝图之EventGraph
跳转到Event Graph选项卡,删除原有的事件,输入如下节点,这里是控制WASD 行走
添加鼠标输入,鼠标作为控制器,控制着Spawn后面的摄像机依据Spawn的世界坐标系进行旋转。
添加键盘空格键控制角色跳跃的操作
6、创建游戏模式蓝图
创建GameStateBase类型的蓝图,打开后,在Class Defaults的Details面板下,更改Default Pawn Class 改成我们自己的
在主窗口的世界设置的下,更换GameMode
7、运行游戏
按键WASD,空格,鼠标都可以正常运行
Bug解决:
当Pawn跳跃的时候,下落的过程中,主角会抖一抖,落地的时候也会抽搐的样子……
Loop动画需要循环,Start和End动画不需要循环,另一方面,当动画表现不好的时候,修改的动画的相关属性可以得到比较好的表现。