(Feat) Add Animation

This commit is contained in:
2026-08-06 13:27:21 +02:00
parent fca1b271f1
commit 72a34f6e40
64 changed files with 1943 additions and 83 deletions
+56
View File
@@ -7,8 +7,10 @@
#include "FpsPlayer.generated.h"
class APickupItem;
class UAnimMontage;
class UCameraComponent;
class UCraftingComponent;
class UHeadBobComponent;
class UInputAction;
class UInputMappingContext;
class UInteractionComponent;
@@ -88,6 +90,26 @@ public:
UFUNCTION(BlueprintPure, Category = "Camera")
UCameraComponent* GetFirstPersonCamera() const { return FirstPersonCamera; }
UFUNCTION(BlueprintPure, Category = "Camera")
UHeadBobComponent* GetHeadBob() const { return HeadBob; }
/** Les bras vus par le joueur local. C'est ici que viendra l'objet en main. */
UFUNCTION(BlueprintPure, Category = "Animation")
USkeletalMeshComponent* GetFirstPersonArms() const { return FirstPersonArms; }
/**
* Joue un montage sur les bras du joueur LOCAL, et seulement lui.
*
* Rien n'est replique et c'est voulu : les bras sont en OnlyOwnerSee, donc
* les animer chez le serveur ou chez un ami ferait tourner un squelette que
* personne ne rend. Le geste vu par les autres joueurs viendra du mesh 3e
* personne, avec ses propres animations, le jour ou l'animateur les livrera.
*
* @return la duree du montage en secondes, 0 s'il n'a pas pu etre joue.
*/
UFUNCTION(BlueprintCallable, Category = "Animation")
float PlayArmsMontage(UAnimMontage* Montage, float PlayRate = 1.f);
UFUNCTION(BlueprintPure, Category = "Interaction")
UInteractionComponent* GetInteractionComponent() const { return InteractionComponent; }
@@ -198,6 +220,40 @@ protected:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
TObjectPtr<UCameraComponent> FirstPersonCamera;
/**
* Bras vue première personne, visibles du seul propriétaire.
*
* Attachés à la CAMÉRA et non à la capsule : ils doivent suivre le tangage du
* regard, sinon lever les yeux les laisserait à l'horizontale. Bénéfice
* gratuit au passage — ils héritent du ressort d'impact et de la bascule
* d'accroupissement, donc les bras encaissent l'atterrissage avec la caméra
* sans une ligne de code de plus.
*
* Sa transform relative se règle À L'ŒIL dans BP_FpsPlayer : les valeurs du
* constructeur ne sont qu'un point de départ, elles dépendent entièrement de
* l'origine du FBX livré par l'animateur.
*/
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation")
TObjectPtr<USkeletalMeshComponent> FirstPersonArms;
/**
* Montage joué sur les bras au ramassage d'un objet (MTG_GrabItem).
* Vide = aucun geste, le ramassage fonctionne quand même.
*/
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Animation")
TObjectPtr<UAnimMontage> GrabMontage;
/**
* Balancement de tête procédural : respiration à l'arrêt, pas à la marche,
* foulée au sprint. Tous ses réglages sont dans le Details panel du composant,
* pas ici : cinq profils de cinq valeurs noieraient la catégorie "Camera".
*
* Il ne touche pas la caméra lui-même, il expose deux décalages que
* ApplyCameraTransform additionne — cette fonction reste le seul écrivain.
*/
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
TObjectPtr<UHeadBobComponent> HeadBob;
/** Détecte et déclenche les interactions avec le monde. */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Interaction")
TObjectPtr<UInteractionComponent> InteractionComponent;