인프런 커뮤니티 질문&답변

Seung Ha Lee님의 프로필 이미지
Seung Ha Lee

작성한 질문수

언리얼 엔진4 입문 (C++ 기반)

스탯 매니저

[스탯매니저] 공격하는 캐릭터 정보인지, 공격당하는 캐릭터 정보인지 헷갈려요.

작성

·

263

0

  • 스탯매니저 강의에서 질문을 드려요.

  • UE_LOG(LogTemp, Log, TEXT("Hit Actor : %s"), *HitResult.Actor->GetName());
    위의 로그에서, HitResult.Actor를 어떤 걸로 찍는지 확인했더니, BP_MyCharacter_2였고, 언리얼에서 확인해보니, 이 라벨은 때리는 캐릭터가 아니라 공격당하는 캐릭터인데 제가 제대로 이해한 게 맞는지 모르겠어요.

  • HitResult.Actor->TakeDamage(Stat->GetAttack(), DamageEvent, GetController(), this);에서, 첫번째 매개변수가 의미하는 게 DamageAmount인데, 여기에서 Stat이 의미하는 게 공격하는 캐릭터의 Stat인가요? 그래야 Stat->GetAttack()을 했을 때 DamageAmount가 나올 것 같아서요.

  • 위에 따라서 TakeDamage 함수가 호출될텐데,
    float AMyCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)

    {

    Stat->OnAttacked(DamageAmount);

    return DamageAmount;

    }
    위에서 정의한 함수에 의하면 Stat의 OnAttacked가 호출되는데, 이때의 Stat은 공격당하는 캐릭터의 Stat이 맞나요?

  • 같은 MyCharacter.cpp 파일 내에서 어떤 순간에는 Stat이 공격하는 캐릭터의 Stat이고, 어떤 순간에는 Stat이 공격당하는 캐릭터의 Stat으로 해석이 되어서 헷갈려요.

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

image파란색이 공격자, 빨간색이 피해자입니다.

TakeDamage는 피해자 쪽에서 실행되니, 거꾸로 Stat이 피해자의 Stat이 되겠죠!
imageclass는 설계도에 비유할 수 있고
MyCharacter라는 객체는 공격자도, 피해자도 될 수 있으니
둘의 기능이 같이 있어 헷갈릴 수 있지만
문맥과 호출 경로를 생각하면서 공격자/피해자를 생각하시면 됩니다
(아니면 단순히 함수 이름으로 구분해도 되겠죠)

Seung Ha Lee님의 프로필 이미지
Seung Ha Lee

작성한 질문수

질문하기