(Feat) Add footsteps

This commit is contained in:
2026-08-11 15:23:10 +02:00
parent e8e128457a
commit 176beab9fc
4776 changed files with 18806 additions and 121 deletions
@@ -5,6 +5,7 @@
#include "FpsPlayer.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "HeldItemComponent.h"
void UFpsArmsAnimInstance::NativeInitializeAnimation()
{
@@ -47,9 +48,30 @@ void UFpsArmsAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
bIsMoving = GroundSpeed > MovingSpeedThreshold
&& !Movement->GetCurrentAcceleration().IsNearlyZero();
// Lu depuis le composant plutot que mis en cache dans un membre : apres un
// respawn le pawn est un NOUVEL acteur, avec un nouveau composant, et un
// pointeur garde ici pointerait sur celui du cadavre.
if (const UHeldItemComponent* HeldItems = Player->GetHeldItemComponent())
{
bHasItemInHand = HeldItems->HasItemInHand();
}
bIsSprinting = Player->IsSprinting();
bIsFalling = Movement->IsFalling();
bIsCrouching = Movement->IsCrouching();
VerticalSpeed = Movement->Velocity.Z;
// Les deux etats de deplacement au sol sont composes ICI et nulle part
// ailleurs. bIsSprinting ne dit que « la touche est enfoncee » : sans le ET
// avec bIsMoving, appuyer sur Maj a l'arret suffit a lancer l'animation de
// course, bras qui pompent devant un personnage qui ne bouge pas.
//
// Le sol et l'accroupi sont exclus des deux pour que ces booleens restent
// mutuellement exclusifs avec les etats Air et Crouch de la machine : deux
// conditions vraies en meme temps, c'est une transition prise au hasard.
const bool bGrounded = !bIsFalling && !bIsCrouching;
bIsRunning = bGrounded && bIsMoving && bIsSprinting;
bIsWalking = bGrounded && bIsMoving && !bIsSprinting;
// La cadence suit la vitesse REELLE et pas l'etat de sprint : c'est ce qui
// fait que les bras accelerent pendant la montee en vitesse, au lieu de