inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

8강 아이템 시스템

상자에 상호작용으로 아이템을 얻는 경우

109

명랑코딩

작성한 질문수 5

0

안녕하세요.

 

지금은 상자가 오버랩 판정을 했을 때 들어온 액터가 캐릭터라면 자동으로 아이템을 습득하기 때문에, 아이템에서 인터페이스를 사용해 캐릭터에 접근하고 있는데요.

 

만약 F 키를 눌러 상호작용으로 상자를 열어 아이템을 습득한다고 가정했을 때는 캐릭터 IA_Interaction과 같은 인풋 액션을 추가해서 함수를 바인드하고, 그 함수에서 아이템으로 접근하면 될까요?

unreal-engine ue-blueprint 언리얼-c++

답변 3

0

이득우

안녕하세요. 답신이 늦었습니다.
네 말씀하신대로 상호작용해야하는 대상이 많아지면 캐릭터에서 처리하는 것보다 상자, NPC 등에서 캐릭터에게 상호작용을 전달하는 형태가 좋아 보입니다.
보다 좋은 구조에 대해 관심이 있으시면 파트4 강의인 게임플레이 어빌리티시스템을 참고해주시면 좋습니다.

0

명랑코딩

캐릭터 클래스에서 핸들링하게 되었을 때, 이 아이템이 무엇인지 판단해야 하는 로직이 캐릭터에 있는 것이 맞는지 의문입니다.

 

AI 인턴님이 말씀해주신

void AYourCharacter::HandleInteraction()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}

의 경우, 이것이 상자라면 -> 아이템 습득

이것이 NPC라면 -> 대화 상호작용 등의 서로 다른 행동을 해야하는데,

캐스팅이 많아지면 지저분해 질 것 같고,

이 경우에는 인터랙션 인터페이스를 캐릭터가 아니나 상자, NPC에게 상속하게 하여 처리하는 것이 맞을까요?

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 섬세한 늑대님.

언리얼 엔진에서 상호작용(Interaction)의 방식으로 아이템을 습득하도록 구현하려는 경우, 말씀하신 대로 특정 입력(예: F 키)를 사용하여 상자와 상호작용하는 시스템을 구축할 수 있습니다. 이러한 구현 방식은 플레이어의 의도에 따라 아이템을 획득할 수 있게 하여 게임플레이의 유연성과 사용자 경험을 향상시킬 수 있습니다.

당신의 프로젝트에서 진행할 수 있는 방법에 대해 간단히 설명 드리겠습니다:

  1. Input Action 설정:

    • 프로젝트 설정(Project Settings)에서 Input 범주로 가서 IA_Interaction과 같은 새로운 Input Action을 추가합니다. 여기에서 F 키를 바인딩합니다.
  2. 캐릭터 클래스에서 Input Action 핸들링:

    • 캐릭터 클래스에 SetupPlayerInputComponent 메서드를 오버라이드 하여 IA_Interaction Input Action을 처리하는 함수를 바인딩합니다.

    ”`cpp
    void AYourCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
    {
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction(“IA_Interaction”, IE_Pressed, this, &AYourCharacter::HandleInteraction);
    }

void AYourCharacter::HandleInteraction()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}
“`

  1. 상호작용 처리 로직 구현:
    • HandleInteraction 함수에서 현재 상호작용 가능한 상자나 오브젝트를 식별하고 아이템을 습득하는 로직을 구현합니다. 이때, 상호작용 가능한 상자와의 거리나 시야 등을 계산하여 실제로 상호작용할 수 있는지 체크하는 방법을 사용할 수 있습니다.
    • 상자를 인터페이스를 통해 제어하는 경우, 해당 인터페이스에 적절한 함수를 추가하여 상자와 상호작용하도록 할 수 있습니다.

더 자세한 구현 방법에 대해서는, 아래의 관련 질문과 답변을 참고하시면 도움이 될 것입니다:

이러한 절차를 통해 F 키를 눌러 특정 상호작용을 통해 아이템을 습득할 수 있는 구조를 설계하게 되면, 플레이어가 능동적으로 게임 내 상호작용을 할 수 있게 됩니다.

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

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

42

2

12강 행동트리에서 질문이 있습니다.

0

51

1

위젯 사이즈랑 위치 질문드려요.

0

81

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

93

3

VS 2026 의 문제일까요?

0

477

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

95

3

캐릭터가 움직이지 않습니다.

0

178

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

62

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

93

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

78

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

73

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

70

2

Use Controller Rotation 옵션값이 궁금합니다.

0

83

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

64

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

78

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

63

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

64

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

72

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

113

2

언리얼 공부방법에 대해 질문드립니다.

0

85

2

4강 에서 이상한 그림자가 남습니다.

0

46

1

2강에서 카메라 회전안되시는분 참고

2

89

2