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

eunjeong seo님의 프로필 이미지

작성한 질문수

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

스탯 매니저

플레이어랑 적이랑 구분했던가요?

24.07.23 18:10 작성

·

56

·

수정됨

0

선생님 안녕하세요.

우여곡적끝에.. takeDamage함수를 성공?해서 ,원점에 꽂힌 칼을 뽑아 레벨에 세워둔 다른 인스턴스를 때리러 갔습니다.

바로 칼을 뺏겼습니다. 당황해서 다시 '오버랩이벤트'를 발생시켜 칼을 뺏고 재빨리 때려서 데미지입는건 확인했습니다. 그와중에 몇번더 뺏기고,다시뺏고를 반복했습니다.

제가 뭘 실수한걸까요...?

알려주세요 ㅠㅠ

(버전5.4에서 헤더 폴더위치 바뀐거땜에 삽질좀하느라,멘탈이 털렸어요.ㅋㅋ ㅠ)

//-----------------------------------------

(추가)

다음강의에서 npc처럼 랜덤배회하면서 오버랩될때마다 무기를 가져가요. 귀엽긴하지만, ... 의도는 아니니까... 간단히 방지할 방법 없을까요?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 25. 18:16

안녕하세요, 인프런 AI 인턴입니다.

eunjeong seo님, 언리얼 엔진4 게임 개발에 있어서 원치 않게 NPC가 플레이어의 무기를 빼앗는 현상은 예상치 못한 상호작용으로 인해 발생할 수 있습니다. 이 문제를 해결하기 위해서는 플레이어와 NPC를 구분하는 로직을 추가해야 합니다.

우선, 플레이어와 NPC가 무기를 빼앗는 로직을 구현할 때, 어떤 대상이 무기에 접근할 수 있는지 식별하기 위해 태그(Tag) 시스템을 사용할 수 있습니다. Unreal Engine에서는 태그를 이용하여 오브젝트를 그룹화하고, 특정 오브젝트에 대한 참조를 쉽게 가져올 수 있도록 도와줍니다.

  1. 플레이어와 NPC에 각각 다른 태그를 설정합니다. 예를 들면, 플레이어는 “Player” 태그를, NPC는 “Enemy” 태그를 부여합니다.

  2. 무기를 소유할 수 있는 오브젝트가 오버랩 이벤트를 발생시켰을 때, 해당 오브젝트의 태그를 확인하는 조건문을 추가합니다. 만약 오브젝트가 “Player” 태그를 가지고 있다면, 무기를 주웠을 때만 동작하도록 로직을 설정합니다.

  3. 이렇게 하면 NPC가 플레이어의 무기를 가져가는 것을 방지할 수 있습니다. 또한, 오버랩 이벤트가 발생했을 때, 특정 태그를 가진 오브젝트에만 반응하도록 설정하여, 의도치 않은 상호작용을 줄일 수 있습니다.

언리얼 엔진의 공식 문서나 커뮤니티를 통해 더 많은 정보를 얻을 수 있습니다. 태그 시스템에 대해 자세히 알아보려면 언리얼 엔진 공식 문서에서 “Tagging Objects”나 “Collision Handling” 섹션을 참조하면 도움이 될 것입니다.

진행하시는 프로젝트에 성공이 있기를 바랍니다!