动画蓝图的编辑全流程(Animation Blueprint)

假设已经将模型和动作导入工程了,这里使用官方模板项目的动作作为例子讲解,只演示待机、跑步的控制逻辑,跳跃的可以看项目模板的动画蓝图。

1,准备好动作和模型

2,新建一个Blend Space 1D

然后在跳出的菜单中选择骨骼

3,打开Blend Space 1D蓝图,分别将待机、行走、跑步三个动作拖拽到下方面板钟

修改驱动属性名为Speed,默认为None,这个属性名为是后面编辑动画蓝图使用的属性名。

最终效果:

4,将TargetWeightInterpolationSpeedPerSec修改为5.0,修改这个值的原因是为了让角色移动时的静止和移动的过度更加自然

5,新建一个动画蓝图(Animation Blueprin):

在弹出的菜单钟选择父类和骨骼,父类为:AnimInstance;骨骼就是当前模型的骨骼

6,打开动画蓝图的EventGraph面板

然后再添加一个float属性,名字为Speed,表示角色的即时速度

然后再编辑事件:Event Blueprint Update Animation

7,打开AnimGraph面板

新建一个State Machine

双击State Machine,进入里面编辑。从Entry节点钟拖拽并新建一个State:

将该State命名为Idel/Run

然后双击该State,进入里面编辑:其中Speed,就是之前新建float属性

最后再返回到最外层的AnimGraph面板,将StateMachine链接到Final Animation Pose上

8,新建角色蓝图Character Blueprint:

父类选择工程中的C++ Character class:

然后打开角色蓝图,选中mesh

将Anim Class指定为之前创建的动画蓝图:

将Skeletal Mesh指定为模型的骨骼:

如果默认的骨骼基准坐标、转向和刚体大小、MovementComponent的默认方向不匹配,则需要编辑下Mesh的Transform

9,到此,动画蓝图和角色蓝图编辑完成,可以在C++中使用刚刚新建的角色蓝图。

ATopDownTestGameMode::ATopDownTestGameMode(){ // use our custom PlayerController class PlayerControllerClass = ATopDownTestPlayerController::StaticClass(); // set default pawn class to our Blueprinted character static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/TopDownCPP/Blueprints/NewBlueprint")); if (PlayerPawnBPClass.Class != NULL) { DefaultPawnClass = PlayerPawnBPClass.Class; }}

补充:播放Montage的Slot问题

播放montage动画时,可能遇到播放动画没有反应的问题,例如,用C++的方式播放:

float ACharacter::PlayAnimMontage(class UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName)

原因:

可能时没有指定Montage的Slot

解决办法:

1,打开Montage动画,看下默认的Slot名字叫什么

2,然后在动画蓝图钟的AnimGraph中,拉出一个Slot节点

然后在从该Slot中连接到Final Animation Pose中:

如果想修改该Slot节点的Slot名字,可以在属性面板中修改:

如何在C++代码中指定Montage的Slot名字,还没研究过。但是可以通过AnimSequence动态创建一个Montage对象,并指定Slot名字:

USkeletalMeshComponent *Mesh = MyActor->FindComponentByClass<USkeletalMeshComponent>();if (Mesh){ UAnimInstance *AnimInst = Mesh->GetAnimInstance(); if (AnimInst) { UAnimMontage* Mtg = AnimInst->PlaySlotAnimationAsDynamicMontage(MyAnimSequence, TEXT("MySlotName"), 0.1f, 0.1f, 1.0f, 30.0f); }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值