상자에 상호작용으로 아이템을 얻는 경우
109
작성한 질문수 5
안녕하세요.
지금은 상자가 오버랩 판정을 했을 때 들어온 액터가 캐릭터라면 자동으로 아이템을 습득하기 때문에, 아이템에서 인터페이스를 사용해 캐릭터에 접근하고 있는데요.
만약 F 키를 눌러 상호작용으로 상자를 열어 아이템을 습득한다고 가정했을 때는 캐릭터 IA_Interaction과 같은 인풋 액션을 추가해서 함수를 바인드하고, 그 함수에서 아이템으로 접근하면 될까요?
답변 3
0
안녕하세요. 답신이 늦었습니다.
네 말씀하신대로 상호작용해야하는 대상이 많아지면 캐릭터에서 처리하는 것보다 상자, NPC 등에서 캐릭터에게 상호작용을 전달하는 형태가 좋아 보입니다.
보다 좋은 구조에 대해 관심이 있으시면 파트4 강의인 게임플레이 어빌리티시스템을 참고해주시면 좋습니다.
0
캐릭터 클래스에서 핸들링하게 되었을 때, 이 아이템이 무엇인지 판단해야 하는 로직이 캐릭터에 있는 것이 맞는지 의문입니다.
AI 인턴님이 말씀해주신
void AYourCharacter::HandleInteraction()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}
의 경우, 이것이 상자라면 -> 아이템 습득
이것이 NPC라면 -> 대화 상호작용 등의 서로 다른 행동을 해야하는데,
캐스팅이 많아지면 지저분해 질 것 같고,
이 경우에는 인터랙션 인터페이스를 캐릭터가 아니나 상자, NPC에게 상속하게 하여 처리하는 것이 맞을까요?
0
안녕하세요, 인프런 AI 인턴입니다. 섬세한 늑대님.
언리얼 엔진에서 상호작용(Interaction)의 방식으로 아이템을 습득하도록 구현하려는 경우, 말씀하신 대로 특정 입력(예: F 키)를 사용하여 상자와 상호작용하는 시스템을 구축할 수 있습니다. 이러한 구현 방식은 플레이어의 의도에 따라 아이템을 획득할 수 있게 하여 게임플레이의 유연성과 사용자 경험을 향상시킬 수 있습니다.
당신의 프로젝트에서 진행할 수 있는 방법에 대해 간단히 설명 드리겠습니다:
Input Action 설정:
- 프로젝트 설정(Project Settings)에서
Input범주로 가서IA_Interaction과 같은 새로운 Input Action을 추가합니다. 여기에서 F 키를 바인딩합니다.
- 프로젝트 설정(Project Settings)에서
캐릭터 클래스에서 Input Action 핸들링:
- 캐릭터 클래스에
SetupPlayerInputComponent메서드를 오버라이드 하여IA_InteractionInput Action을 처리하는 함수를 바인딩합니다.
”`cpp
void AYourCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);PlayerInputComponent->BindAction(“IA_Interaction”, IE_Pressed, this, &AYourCharacter::HandleInteraction);
}- 캐릭터 클래스에
void AYourCharacter::HandleInteraction()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}
“`
- 상호작용 처리 로직 구현:
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





