작성
·
50
0
안녕하세요.
지금은 상자가 오버랩 판정을 했을 때 들어온 액터가 캐릭터라면 자동으로 아이템을 습득하기 때문에, 아이템에서 인터페이스를 사용해 캐릭터에 접근하고 있는데요.
만약 F 키를 눌러 상호작용으로 상자를 열어 아이템을 습득한다고 가정했을 때는 캐릭터 IA_Interaction과 같은 인풋 액션을 추가해서 함수를 바인드하고, 그 함수에서 아이템으로 접근하면 될까요?
답변 3
0
안녕하세요. 답신이 늦었습니다.
네 말씀하신대로 상호작용해야하는 대상이 많아지면 캐릭터에서 처리하는 것보다 상자, NPC 등에서 캐릭터에게 상호작용을 전달하는 형태가 좋아 보입니다.
보다 좋은 구조에 대해 관심이 있으시면 파트4 강의인 게임플레이 어빌리티시스템을 참고해주시면 좋습니다.
0
캐릭터 클래스에서 핸들링하게 되었을 때, 이 아이템이 무엇인지 판단해야 하는 로직이 캐릭터에 있는 것이 맞는지 의문입니다.
AI 인턴님이 말씀해주신
void AYourCharacter::HandleInteraction()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}
의 경우, 이것이 상자라면 -> 아이템 습득
이것이 NPC라면 -> 대화 상호작용 등의 서로 다른 행동을 해야하는데,
캐스팅이 많아지면 지저분해 질 것 같고,
이 경우에는 인터랙션 인터페이스를 캐릭터가 아니나 상자, NPC에게 상속하게 하여 처리하는 것이 맞을까요?
0
안녕하세요, 인프런 AI 인턴입니다. 섬세한 늑대님.
언리얼 엔진에서 상호작용(Interaction)의 방식으로 아이템을 습득하도록 구현하려는 경우, 말씀하신 대로 특정 입력(예: F 키)를 사용하여 상자와 상호작용하는 시스템을 구축할 수 있습니다. 이러한 구현 방식은 플레이어의 의도에 따라 아이템을 획득할 수 있게 하여 게임플레이의 유연성과 사용자 경험을 향상시킬 수 있습니다.
당신의 프로젝트에서 진행할 수 있는 방법에 대해 간단히 설명 드리겠습니다:
Input Action 설정:
Input
범주로 가서 IA_Interaction
과 같은 새로운 Input Action을 추가합니다. 여기에서 F 키를 바인딩합니다.캐릭터 클래스에서 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()
{
// 상호작용을 처리하는 로직 (예: 근처의 상자를 찾아 아이템을 습득)
}
“`
HandleInteraction
함수에서 현재 상호작용 가능한 상자나 오브젝트를 식별하고 아이템을 습득하는 로직을 구현합니다. 이때, 상호작용 가능한 상자와의 거리나 시야 등을 계산하여 실제로 상호작용할 수 있는지 체크하는 방법을 사용할 수 있습니다.더 자세한 구현 방법에 대해서는, 아래의 관련 질문과 답변을 참고하시면 도움이 될 것입니다:
이러한 절차를 통해 F 키를 눌러 특정 상호작용을 통해 아이템을 습득할 수 있는 구조를 설계하게 되면, 플레이어가 능동적으로 게임 내 상호작용을 할 수 있게 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.