关卡 动画 蓝图 运行_Unreal Engine4 学习笔记1 状态机 动画蓝图

本文介绍了Unreal Engine4中动画蓝图的学习,特别是状态机和混合空间 BlendSpace 的使用。在动画图表中,状态机根据变量如 'isInAir' 和 'speed' 进行状态转换。同时,通过Character蓝图或C++项目中的GameMode类,阐述了如何关联动画与角色,并设置出生点和输入控制。详细讲解了输入动作如跳跃、移动和触摸设备的绑定方法。
摘要由CSDN通过智能技术生成

1.动画蓝图 包含 状态机 包含 混合空间BlendSpace,即状态机包含在动画蓝图的"动画图表中",而混合空间可用于在状态机中向某(没)一个状态输出最终POSE:

6ff2849b3f0963b18be632f8cd04dd87.png  

65a76c1d1388d86d1f87f3cc86f38b76.png

动画蓝图一共包含两个东西,除了上面提到的动画图表,还包括了一个事件图表。动画图表中,状态机内肯定有一些变量来决定状态的转换,比如"isInAir","speed"等。而这些都可以在"事件图表"中得到并设置:

d53473b925ad6dad219f767b01335a68.png

动画又是怎么和我们控制的角色关联起来的呢?

第一种方式是通过Character蓝图,然后如图有相关选项进行关联,下图的例子关联了动画和Mesh

21268964f2cd9a7ce4776dc30d299970.png

2.新建的c++项目,是不包含Character类的, 但包含一个parent class 为 GameMode的类

关于出生点,最好是在GameMode类的基础上新建一个GameMode蓝图,然后在蓝图中设置Default Pawn Class:

2fab318e99c769f7165a462cfdfbb587.png

然后还要在设置->世界设置中进行设置:

8a972b552be5e5f87be43b04579555eb.png

关于输入,这样的代码出现在Character类中:

void ABatteryCollectorCharacter::SetupPlayerInputComponent(class UInputComponent*InputComponent)

{//Set up gameplay key bindings

check(InputComponent);

InputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);

InputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping);

InputComponent->BindAction("Collect", IE_Pressed, this, &ABatteryCollectorCharacter::CollectPickups);

InputComponent->BindAxis("MoveForward", this, &ABatteryCollectorCharacter::MoveForward);

InputComponent->BindAxis("MoveRight", this, &ABatteryCollectorCharacter::MoveRight);//We have 2 versions of the rotation bindings to handle different kinds of devices differently//"turn" handles devices that provide an absolute delta, such as a mouse.//"turnrate" is for devices that we choose to treat as a rate of change, such as an analog joystick

InputComponent->BindAxis("Turn", this, &APawn::AddControllerYawInput);

InputComponent->BindAxis("TurnRate", this, &ABatteryCollectorCharacter::TurnAtRate);

InputComponent->BindAxis("LookUp", this, &APawn::AddControllerPitchInput);

InputComponent->BindAxis("LookUpRate", this, &ABatteryCollectorCharacter::LookUpAtRate);//handle touch devices

InputComponent->BindTouch(IE_Pressed, this, &ABatteryCollectorCharacter::TouchStarted);

InputComponent->BindTouch(IE_Released, this, &ABatteryCollectorCharacter::TouchStopped);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值