欢迎光临散文网 会员登陆 & 注册

09_P83~P88TheAnimationBlueprint

2023-03-22 10:04 作者:俯瞰万千风景  | 我要投稿

83the Animation Blueprint动画蓝图

Breathing Life into echo

给角色创建动画蓝图

一共是两点

1、我们需要在动画蓝图中获取角色的移动速度

2、我们需要在动画蓝图中设置一个状态机 static machine,状态机里面,通过判断移动速度,设置idle和run两种状态的切换

1、动画蓝图创建和角色数据初始化

新建一个动画蓝图


进入AnimGraph,创建一个状态机state machine,命名为Ground Locomotion


然后我们事件图表中,初始化动画,需要获取角色bp_testCharacter的角色移动信息charactermovement

首先创建事件节点


创建一个类型为BP_TestCharacter的变量

通过“尝试获取pawn拥有者,转换为bp_testCharacter类型,赋值给新建的character变量,

然后从character中获取角色移动组件character movement的信息,并将其结果提升为变量

整体蓝图如下


接着我们通过”事件蓝图更新动画“事件 获取character movement中,移动速度velocity的信息,这里我们只需要获得xy轴上的速度信息


获取XY方向上 向量的长度(也就是速度)


将获得的结果类型提升为变量

整体蓝图如下


然后我们回到状态机这里

双击状态机

新建两个状态idle 、 run,并关联run至idle的关系



进入idle 和run 添加动画



然后进入两个过渡规则,通过GroundSpeed添加判断条件


最后编译保存 执行一下看看结果,角色就能在地图中“跑起来”了

并且在速度为0和不为0的时候有各自的动画表现


84 the anim instanceanim实例

the c++ class for the animation blueprint动画蓝图的c++类

创建一个AnimInstance类


删除原有动画蓝图中的节点和变量

在动画蓝图的类设置里面 修改父类为创建的这个类


并在动画状态机中,替换之前的变量GroundSpeed

85Jumping跳

Creating Action Mappings创建动作映射

蓝图实现:创建一个操作映射


在character蓝图 bp_testCharactor中,输入jump 找到jump的操作事件

并创建一个jump函数



C++实现:

依然需要在项目设置中创建一个操作映射

然后在SetupPlayerInputComponent中绑定jump操作,并使用ACharacter类中的Jump方法


86Jump Animations跳的动画

Adding Jump States添加跳转状态

进入动画蓝图中,在AnimGraph中,断开原来GroundLocomotion的链接

从GroundLocomotion引出cached poses,创建一个状态缓存,命名为GroundLocomotion


然后重新创建一个状态机 MainMachine


进入之后添加节点


用之前C++创建的isFalling判断是否在空中

OnGround->InAir  


InAir->Land

Land->OnGround

添加判断语句,获取剩余的跳跃动画时间,如果移动速度大于0,则立刻切换到OnGround状态

这里的循环动画记得在跳跃状态时,需要关掉


从Land到OnGround的规则属性上,需要勾选这个,这样才能在落地动作完成后,自动过渡到OnGround,否则就会一直播放落地动作

87Inverse Kinematics逆运动学

Fine-Truning our Character's Animations微调我们的角色动画


太难了····


88小结

09_P83~P88TheAnimationBlueprint的评论 (共 条)

分享到微博请遵守国家法律