(Feat) Add Animation Fps Charater
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Animation/AnimNotifies/AnimNotify.h"
|
||||
#include "AnimNotify_ItemAction.generated.h"
|
||||
|
||||
/**
|
||||
* Declenche l'effet de l'objet en main a l'instant precis ou le geste frappe.
|
||||
*
|
||||
* ------------------------------------------------------------------
|
||||
* Pourquoi un notify plutot que le clic
|
||||
* ------------------------------------------------------------------
|
||||
*
|
||||
* Le clic gauche et le COUP sont deux choses distinctes, separees par le temps
|
||||
* que met le bras a descendre. Faire partir le trace de recolte sur l'appui
|
||||
* donne une hache qui abat l'arbre avant de l'avoir touche : le joueur voit le
|
||||
* resultat, puis l'animation qui aurait du le produire. C'est le meme
|
||||
* decalage qu'un bruit de pas joue au debut de la foulee.
|
||||
*
|
||||
* L'instant de l'impact n'est pas une valeur qu'on puisse ecrire en C++ : il
|
||||
* appartient a l'ANIMATION, il change d'un montage a l'autre, et il rebouge a
|
||||
* chaque fois qu'on retouche la courbe. Un delai en secondes sur le DataAsset
|
||||
* serait a re-regler a la main a chaque nouvelle animation livree -- et faux
|
||||
* des qu'on toucherait au Play Rate. Le marqueur, lui, suit le montage.
|
||||
*
|
||||
* ------------------------------------------------------------------
|
||||
* Reseau : ce notify ne tombe QUE chez le joueur local
|
||||
* ------------------------------------------------------------------
|
||||
*
|
||||
* Le montage d'usage est joue sur les BRAS, qui sont en OnlyOwnerSee et
|
||||
* n'existent visuellement que chez le proprietaire du pawn
|
||||
* (UHeldItemComponent::PlayLocalArmsMontage). Le notify part donc sur une
|
||||
* seule machine, exactement comme le clic qu'il remplace, et le routage vers
|
||||
* le serveur reste celui d'avant : AFpsPlayer::TriggerHeldItemAction envoie la
|
||||
* RPC, le serveur fait autorite.
|
||||
*
|
||||
* Corollaire a ne pas oublier le jour ou un montage d'usage sera joue aussi sur
|
||||
* le CORPS (visible des autres joueurs) : ce montage-la tournerait sur les
|
||||
* quatre machines, et sans la garde IsLocallyControlled() de
|
||||
* TriggerHeldItemAction chaque coup de hache partirait en quatre exemplaires.
|
||||
*/
|
||||
UCLASS(const, hidecategories = Object, collapsecategories, meta = (DisplayName = "Item Action"))
|
||||
class EMBERWILD_API UAnimNotify_ItemAction : public UAnimNotify
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation,
|
||||
const FAnimNotifyEventReference& EventReference) override;
|
||||
|
||||
virtual FString GetNotifyName_Implementation() const override;
|
||||
};
|
||||
Reference in New Issue
Block a user