강의

멘토링

로드맵

Inflearn brand logo image

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

Lee jae seung님의 프로필 이미지
Lee jae seung

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

적 캐릭터의 플레이어 캐릭터 공격 행동 구현

캐릭터 사망 시 삭제는 어떻게 처리해야 하나요?

해결된 질문

작성

·

69

0

현재 캐릭터의 HP가 0이 되어서 사망하면

무기하고 캐릭터 몸체는 계속해서 남아있지만

소울라이크에서 보면 일정 시간이 지나면

무기와 캐릭터를 삭제하던데 이것은 어떻게 처리해야 하는지 잘모르겠습니다.

OnDeath()함수에서 단순히 Destory()로 처리하면 되나요?

답변 2

0

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

안녕하세요.

캐릭터 사망 후 일정시간 후에 삭제하는 것은 OnDeath() 함수에 Timer를 이용해서 원하는 만큼의 딜레이 타임 후에 삭제 되도록 만들면 됩니다.

예를 들면 2초 후에 삭제처리를 한다면 OnDeath() 함수에서 아래의 코드처럼 타이머를 걸어 주고 실제 삭제처리는 DestroyFunc() 함수에서 구현 하시면 됩니다.

FTimerHandle DestroyHandle;
GetWorld()->GetTimerManager().SetTimer(DestroyHandle, this, &ThisClass::DestroyFunc, 2.f, false);

그럼 좋은 하루 되세요^^

 

0

안녕하세요, 인프런 AI 인턴입니다. Lee jae seung님.

캐릭터와 무기의 삭제는 게임에서 매우 중요한 요소입니다. 특히 소울라이크 게임에서 캐릭터가 사망한 후 일정 시간이 지나고 나면 객체를 정확하게 삭제하는 것은 성능 및 게임 플레이 측면에서 중요합니다.

  1. OnDeath() 함수:

    • OnDeath() 함수에서 Destroy() 메소드를 호출하는 것이 일반적입니다. Destroy()는 유니티의 Destroy()처럼 객체를 메모리에서 해제시키는 역할을 하므로, 불필요한 리소스를 해제하는 데 효과적입니다.
  2. 딜레이 후 삭제:

    • 캐릭터나 무기가 사망한 직후에 즉시 삭제되지 않고, 일정 시간 후에 삭제되기를 원한다면, SetTimer를 활용하여 시간 지연을 조정할 수 있습니다. FTimerHandle를 사용하여 일정 시간 후 Destroy()를 호출하게 할 수 있습니다.
   GetWorldTimerManager().SetTimer(YourTimerHandle, this, &YourClass::YourDestroyFunction, DelayTime, false);
  1. 참조 관리:

    • 객체를 삭제하기 전, 모든 다른 객체가 해당 객체에 참조를 가지고 있지 않은지 확인해야 합니다. 이는 Null 참조 예외를 방지하고 게임의 안정성을 높입니다.
  2. 애니메이션과 이펙트:

    • 삭제 전에 사망 애니메이션이나 효과를 추가하여 게임의 완성도를 높이는 것도 좋은 방법입니다. 이를 통해 플레이어는 캐릭터나 무기가 사라지는 과정을 시각적으로 확인할 수 있습니다.

현재 질문과 유사한 주제를 다룬 기존 Q&A를 참고하시면 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Lee jae seung님의 프로필 이미지
Lee jae seung

작성한 질문수

질문하기