info8995 님의 블로그

🎯오늘의 TIL(Today I Learned)-2025년 2월 21일 🎯 본문

TIL(Today I Learned)/C++

🎯오늘의 TIL(Today I Learned)-2025년 2월 21일 🎯

info8995 2025. 2. 21. 20:37

📌 1. FPSCharacter 코드 개선 및 정리

  • 기존 FPSCharacter 클래스를 유지하면서 주석 추가 및 구조 정리
  • 블루프린트에서 Health 값에 접근할 수 있도록 BlueprintCallable 적용

✅ 주요 변경 사항

  1. 주석 추가: 가독성을 위해 각 함수에 역할 설명 추가
  2. 코드 정리: 필요 없는 코드 제거 및 함수 순서 정리
  3. BlueprintCallable 추가: 블루프린트에서 IsAlive(), TakeDamage() 사용 가능하도록 변경
cpp
복사편집
UFUNCTION(BlueprintCallable) virtual bool IsAlive() const override;
cpp
복사편집
UFUNCTION(BlueprintCallable, Category = "Character Stats") void TakeDamage(float DamageAmount) override;

📌 2. 블루프린트에서 체력(Health) 값 가져오기

  • 목표: 애니메이션 블루프린트에서 Health 값 활용
  • 방법:
    1. Get Owning Actor → Cast To FPSCharacter → Get Health
    2. Health 값을 블루프린트 변수에 저장하여 활용

⚠️ 해결한 오류

  • Cast To Character를 사용했을 때 Health 변수 접근 불가 → Cast To FPSCharacter로 변경하여 해결

📌 3. 사망 처리 로직 개선

  • 사망 시 즉시 삭제하는 것이 아닌, 일정 시간 후 삭제
  • 사망 애니메이션 후 삭제 가능하도록 구현
cpp
복사편집
void AFPSCharacter::Die() { if (!bIsAlive) return; UE_LOG(LogTemp, Warning, TEXT("Character has died.")); bIsAlive = false; // 일정 시간 후 캐릭터 삭제 GetWorld()->GetTimerManager().SetTimer( DeathTimerHandle, this, &AFPSCharacter::DestroyCharacter, 3.0f, // 3초 후 삭제 false ); }

📌 4. 최종 코드 구성

✅ FPSCharacter.h 정리
✅ FPSCharacter.cpp 내 함수 정리 및 블루프린트 활용 가능하도록 변경
블루프린트에서 체력 값 가져오기 성공
사망 후 일정 시간 후 삭제 구현 완료


📌 오늘 배운 점

  1. 블루프린트에서 C++ 변수 활용하는 방법
  2. 블루프린트 캐스팅 오류 해결 (Character vs FPSCharacter)
  3. C++에서 타이머(SetTimer)를 활용한 지연 삭제
  4. 코드 가독성 향상을 위한 주석 및 정리 방법

📌 🔥 마무리: 이제 애니메이션 블루프린트에서 Health 값에 따라 사망 애니메이션 적용 가능! 🎮💡
⚡️ 다음 목표: 체력 값이 50% 이하일 때 다른 애니메이션 실행시키기 🚀