열쇠와 문 시스템 (고급)

플랫폼으로 알을 가져가 문을 여는 열쇠를 생성합니다.

먼저 문을 설정하고 커스텀 메시지를 부여합니다.

  • 'L' 키를 눌러 애셋 리스트 중 문을 선택하고 'Door' 비헤이비어를 부여합니다.

  • 'Message Required'의 기본 메시지를 삭제합니다 (있을 경우).

  • 'Message Required'에 'OpenDoor'와 'CloseDoor'를 추가합니다.

하나의 메시지로도 작업을 수행할 수 있지만 쉬운 설명을 위해 별도의 메시지를 사용했습니다.

다음으로 열쇠를 만들어야 합니다. 수집되면 문을 엽니다.

  • 열쇠 애셋을 놓고 'Pickable' 컴포넌트를 추가합니다.

  • 'Collect action required'를 'Collision'으로 설정합니다.

  • 'Collect Message'를 'OpenDoor'로 설정합니다.

이제 열쇠를 모으면 문이 열립니다. 이 예시에서는 플랫폼으로 알을 가져가면 문을 열 수 있는 열쇠가 주어지게 만들고자 합니다. 그럼 이제 그 부분을 만들어 보죠.

열쇠를 'Preset'으로 만들어야 합니다.

  • 금열쇠를 선택하고 왼쪽 바의 'Preset' 버튼을 클릭합니다.

  • 'Create New Preset'을 클릭합니다.

  • 'Finish' 버튼을 클릭합니다.

이제 금열쇠가 프리셋이 되었으므로 'Asset Spawner' 행동이나 'Drop' 컴포넌트에서 메시지와 함께 호출될 수 있습니다. 이제 세팅을 시작해 봅시다!

  • 'L' 키를 눌러 애셋 라이브러리에서 알을 선택합니다.

  • 'Pickable' 컴포넌트를 적용합니다.

  • 'Tags'에 'Egg'를 추가합니다.

  • 'L' 키를 눌러 애셋 라이브러리에서 플랫폼을 선택합니다.

  • 'Asset Spawner' 비헤이비어를 부여합니다.

  • 'Use Preset'을 'True'로 설정하고 'Gold Key' 'Preset'을 선택합니다.

  • 'Message Required'를 'DetectEgg'로 설정합니다.

동일한 오브젝트를 이용하여 동시에 메시지를 주고받을 수 없기 때문에 이 절차를 분리해야 합니다. 플랫폼이 'DetectEgg'라는 메시지를 받으면 'Gold Key'가 생성되게 설정했습니다. 이제 애셋이 'Egg' 태그를 감지하여 플랫폼에 메시지를 전송하도록 합니다.

  • 'L' 키를 눌러 애셋 라이브러리에서 작은 애셋 하나를 선택합니다. 이 예시에서는 'NumPad Switch'를 사용했습니다.

  • 추가된 비헤이비어가 있다면 삭제하고 'Speaker' 컴포넌트를 추가합니다.

  • 'Display condition'을 'DetectEntity'로 설정합니다.

  • 'Target Tags'를 'Egg'로 설정합니다.

  • 'Message When Spoken'을 'DetectEgg'로 설정합니다.

  • 애셋을 '투명'하게 만들고 Physics를 'No collision'로 설정합니다.

  • 알을 감지하게 만들 플랫폼 아래로 애셋을 이동합니다.

이제 플랫폼으로 알을 가져가면 투명한 오브젝트가 알 애셋에 추가된 'Egg' 태그를 감지하여 플랫폼으로 'Asset Spawner' 메시지를 보내 프리셋 'Gold Key'를 생성합니다. 플레이어는 금열쇠를 모아 문을 열 수 있습니다.

보너스로 한 가지 더 알아보죠! 다른 메시지를 보내지 않으면 다시 열 수 없게 플레이어가 지나가면 문을 닫도록 탐지기를 설치할 수 있습니다.

  • 'L' 키를 눌러 애셋 라이브러리에서 작은 애셋 하나를 선택합니다. 이 예시에서는 'NumPad Switch'를 사용했습니다.

  • 애셋을 '투명'하게 만들고 Physics를 'No collision'로 설정합니다.

  • 추가된 비헤이비어가 있다면 삭제하고 'Speaker' 컴포넌트를 추가합니다.

  • 'Display condition'을 'DetectEntity'로, 'Detection Range'를 '4'로 설정합니다.

  • 'Target Tags'를 'Avatar'로 남겨 둡니다.

  • 'Message When Spoken'을 'CloseDoor'로 설정합니다.

이제 플레이어가 문을 통과할 때 투명한 오브젝트가 아바타를 감지하고 문을 닫는 'CloseDoor' 메시지를 전송합니다. 정말 멋지죠!

Last updated