@twitterpety

Не работает notify в UE4 C++, хотя event в Анимации есть Что Делать?

Я хочу, чтобы при проигрывании анимации перезарядки, персонаж не мог стрелять. Но, как на зло, у меня появляется какая то странная ошибка, что если я ему запрещаю стрелять с помощью bool, то он у меня вообще перестаёт стрелять, то есть не попадает в блок с кодом с Нотифаем. Как решить? Вот код, где ИСПОЛЬЗУЕТСЯ нотифай:

weaponComponent:

h

UFUNCTION()
void OnClipingFinished(USkeletalMeshComponent* MeshComp);

UPROPERTY(EditDefaultsOnly, Category = "Weapon")
UAnimMontage* CurrentReloadAnimation = nullptr;

void InitAnim();

cpp:

void UWeaponComponent::InitAnim()
{
if (!CurrentReloadAnimation) return;

const auto& NotifyEvents = CurrentReloadAnimation->Notifies;
for (const FAnimNotifyEvent& NotifyEvent : NotifyEvents)
{
if (auto ClipingFinishNotify = Cast(NotifyEvent.Notify))
{
ClipingFinishNotify->OnNotified.AddUObject(this, &UWeaponComponent::OnClipingFinished);
break;
}
}
}

void UWeaponComponent::OnClipingFinished(USkeletalMeshComponent* MeshComp)
{
ACharacter* Character = Cast(GetOwner());
if (!Character || MeshComp != Character->GetMesh()) return;
IsClipingInProgress = false;
}

Notify:

h

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "ClipingAnimNotify.generated.h"

DECLARE_MULTICAST_DELEGATE_OneParam(FOnNotifiedSignature, USkeletalMeshComponent*)

UCLASS()
class MYPROJECT_API UClipingAnimNotify : public UAnimNotify
{
GENERATED_BODY()

public:
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation) override;

FOnNotifiedSignature OnNotified;

};

cpp

#include "Animations/ClipingAnimNotify.h"

void UClipingAnimNotify::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
OnNotified.Broadcast(MeshComp);
Super::Notify(MeshComp, Animation);
}

Точку остановы ставил в ClipingFinishNotify->OnNotified.AddUObject(this, &UWeaponComponent::OnClipingFinished) и при перезарядке Эдитор не закрывался
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы