9 Animation
078 The Animation Blueprint
基于 Echo_Skeleton 创建动画蓝图 ABP_Echo
079 The Anim Instance
基于 AnimInstance 创建一个 C++ 文件 SlashAnimInstance
| SlashAnimInstance.h |
|---|
| class SLASH_API USlashAnimInstance : public UAnimInstance
{
GENERATED_BODY()
public:
virtual void NativeInitializeAnimation() override;
virtual void NativeUpdateAnimation(float DeltaTime) override;
UPROPERTY(BlueprintReadOnly)
TObjectPtr<ASlashCharacter> SlashCharacter;
UPROPERTY(BlueprintReadOnly, Category = "CMovement")
TObjectPtr<UCharacterMovementComponent> SlashCharacterMovement;
UPROPERTY(BlueprintReadOnly, Category = "CMovement")
float GroundSpeed;
};
|
| SlashAnimInstance.cpp |
|---|
| void USlashAnimInstance::NativeInitializeAnimation()
{
Super::NativeInitializeAnimation();
SlashCharacter = Cast<ASlashCharacter>(TryGetPawnOwner());
if (SlashCharacter)
{
SlashCharacterMovement = SlashCharacter->GetCharacterMovement();
}
}
void USlashAnimInstance::NativeUpdateAnimation(float DeltaTime)
{
Super::NativeUpdateAnimation(DeltaTime);
if (SlashCharacterMovement)
{
GroundSpeed = UKismetMathLibrary::VSizeXY(SlashCharacterMovement->Velocity);
}
}
|
090 Jumping
| SlashCharacter.h |
|---|
| class SLASH_API ASlashCharacter : public ACharacter
{
protected:
UPROPERTY(EditDefaultsOnly, Category = "CInput")
TObjectPtr<UInputAction> JumpAction;
void Jump(const FInputActionValue& Value);
};
|
| SlashCharacter.cpp |
|---|
| void ASlashCharacter::Jump(const FInputActionValue& Value)
{
ACharacter::Jump();
}
void ASlashCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
if (UEnhancedInputComponent* EnhancedInputComponent= CastChecked<UEnhancedInputComponent>(PlayerInputComponent))
{
EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Triggered, this, &ASlashCharacter::Jump);
}
}
|
091 Jump Animations
| SlashAnimInstance.h |
|---|
| class SLASH_API USlashAnimInstance : public UAnimInstance
{
public:
UPROPERTY(BlueprintReadOnly, Category = "CMovement")
bool bIsFalling;
};
|
| SlashAnimInstance.cpp |
|---|
| void USlashAnimInstance::NativeUpdateAnimation(float DeltaTime)
{
Super::NativeUpdateAnimation(DeltaTime);
if (SlashCharacterMovement)
{
GroundSpeed = UKismetMathLibrary::VSizeXY(SlashCharacterMovement->Velocity);
bIsFalling = SlashCharacterMovement->IsFalling();
}
}
|
082 Inverse Kinematics
基于 ControlRig 创建控制绑定文件
创建函数 FootTrace