# TNT 폭발 + TNT 재생성기

이 튜토리얼에서는 타격 시 폭발하고 사용 후에 재생성되는 이동 가능한 폭발물 TNT 생성에 대해 알아보겠습니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_j-CLaj2VXz4K0ntp%2F-MS_nREwo0WH1_WHvgCg%2FTNTexplosion.gif?alt=media\&token=6e9d2bc6-47d6-487d-a40f-4dfdf9d1094c)

우선 TNT를 만들어 봅시다.

* 키보드의 **L 키**를 눌러 라이브러리를 오픈하고 TNT 애셋을 드래그합니다.\
  만약 라이브러리에 보이지 않는다면 마켓플레이스 버튼을 클릭해 추가합니다.
* 무엇인지 알 수 있도록 TNT에 고유한 **이름**을 붙입니다. 이 예시에서는 '**TNT - Box Destroyer**'를 사용했습니다.
* **'Physics'**&#xB97C; **'Collisions + Gravity'**&#xB85C; 설정해 TNT를 발로 차서 바닥에 떨어트릴 수 있도록 합니다.
* 이 애셋에는 비헤이비어를 추가하지 않아도 됩니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_j-CLaj2VXz4K0ntp%2F-MS_oyU67kD8zaPX-s4d%2FTNTexplosion_1.png?alt=media\&token=1631c75e-dabc-4af7-8e2b-a83b5f4588c9)

* **'Health'** 컴포넌트를 추가합니다.&#x20;
* 낮은 수치를 지정하여 빠르게 파괴될 수 있도록 합니다.
* **'Death Delay'**&#xB97C; **'2'**&#xB85C; 설정합니다. TNT가 타격된 후에 터지기까지 걸리는 시간을 의미합니다.
* **'Instant death message'**&#xB97C; **'xxxx'**&#xB85C; 설정합니다. 또는 기본 메시지가 아닌 다른 어떤 것이든 괜찮습니다.
* **'Life Bar Display'**&#xB97C; **'Always'**&#xB85C; 설정합니다. TNT를 항상 눈에 띄도록 합니다.<br>
* **'Drop'** 컴포넌트를 추가합니다.
* **'Drop condition'**&#xC744; **'Death'**&#xB85C; 설정합니다. 사망 시 무엇인가 드롭됩니다.
* **'Drop Amount'**&#xB97C; **'1'**&#xB85C; 설정합니다.
* **'Type of drop'**&#xC744; **'Preset'**&#xC73C;로 설정합니다.\
  **'Preset'** 필드 아래 다음으로 생성할 'void' 프리셋을 선택할 수 있습니다. 이 부분은 이후 다시 알아보겠습니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_j-CLaj2VXz4K0ntp%2F-MS_qQg2Uw1kP5DMkdDE%2FTNTexplosion_2.png?alt=media\&token=b5ec6db1-0ecf-4603-a3f3-e887589d40f8)

* **'Indicator'** 컴포넌트를 추가합니다.
* **'Display Name'**&#xC744; 설정합니다. 여기에서 설정하는 이름으로 게임에서 나타나게 됩니다. 여기서는 **'TNT'**&#xB97C; 사용했습니다.
* **'Visibility Distance'**&#xB97C; 짧게 설정합니다. 여기서는 **'9'** 블록만큼의 거리로 설정했습니다.<br>
* **'Pickable'** 컴포넌트를 추가합니다. 이제 플레이어는 E 키를 눌러 TNT를 집을 수 있습니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_qU2tXzs9Swo7b7v_%2F-MS_s7BURgWnNPdPrSyJ%2FTNTexplosion_3.png?alt=media\&token=62e24d59-9915-46f8-8648-9dd3430ed260)

타격 시 또는 '**xxxx**'라는 메시지가 수신될 시 파괴되어 프리셋을 드롭하는 TNT를 생성했습니다. 플레이어가 줍거나 밀면 플레이어에게 주의를 주는 메시지가 표시되는 Indicator 또한 포함되어 있습니다.\
\
이제 이 TNT가 파괴하는 Void를 생성해 보겠습니다.

* Void를 위해 아주 작은 애셋을 사용합니다. 이 예시에서는 **'NumPad Switch'**&#xB97C; 사용했습니다.
* ‘**NumPad Switch**’를 투명하게 하고 '**No collisions**'로 설정합니다.
* 이후 다른 애셋과 상하위 관계를 설정해야 하므로 검색할 수 있도록 **이름**을 설정합니다. 여기서는 '**TNT - Void**'를 사용했습니다.
* '**Void**' 행동을 부여하고 '**Visible**'을 **False**로 설정합니다.
* **'Destroy Area'**&#xB97C; 원하는 크기만큼 크게 설정합니다. 폭발의 크기가 클수록 지연되는 시간도 길어집니다.
* **'Activation Mode'**&#xB97C; **'OnStart'**&#xB85C; 설정합니다.
* **'Blocks Destruction'**&#xB97C; **'DontDestroy'**&#xB85C; 설정합니다.
* '**Asset Desctruction'**&#xC744; **'OnlyDestroyFromList'**&#xB85C; 설정하고 TNT가 폭파할 애셋을 추가합니다. 이 예시에서는 **'Storage Container'**&#xB97C; 파괴하게 만들겠습니다.<br>
* **'Health'** 컴포넌트를 추가합니다.
* **'Death Event'**&#xB97C; **'Destroy'**&#xB85C; 설정합니다.
* **'Death Delay'**&#xB97C; **'-1'**&#xB85C; 설정합니다.
* **'Instant death message'**&#xB97C; **'tntkillx'**&#xB85C; 설정합니다.
* **'Life Bar Display'**&#xB97C; '**Hidden'**&#xC73C;로 설정합니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_tXGMupcwxqBY6kSW%2F-MS_v7ivpi6gKWry7quB%2FTNTexplosion_4.png?alt=media\&token=40e207d0-a3c6-4217-b8a9-7e330ab2763d)

생성되면 붉은색 파괴 영역에 있는 Storage Containers를 즉시 파괴하는 void를 만들었습니다. 또한 Void가 폭발하면 계속해서 공백이 발생하여 게임이 지연되지 않도록 Health 컴포넌트를 부여했습니다. 이제 이 지연 문제를 다뤄 보겠습니다.\
\
\&#xNAN;**'Storage Container'**&#xB97C; 파괴하도록 Void가 설정되었으므로, 파괴된 이후에 다른 Void를 또다시 파괴하는 데 이용됩니다. 이제부터 함께 해 보죠.

* **'Storage Container'**&#xB97C; 놓습니다.
* 투명하게 하고 '**No collisions**'로 설정합니다.
* 이후 다른 애셋과 상하위 관계를 설정해야 하므로 검색할 수 있도록 **이름**을 설정합니다. 여기서는 **'TNT - VoidKill'**&#xC744; 사용했습니다.<br>
* **'Health'** 컴포넌트를 추가합니다.
* **'Death Event'**&#xB97C; **'Destroy'**&#xB85C; 설정합니다.
* **'Death Delay'**&#xB97C; **'1'**&#xB85C; 설정합니다.
* **'Life Bar Display'**&#xB97C; '**Hidden'**&#xC73C;로 설정합니다.
* '**Message sent on death**'를 '**tntkillx**'로 설정합니다.
* **'Send To Tags'**&#xB97C; **'Void'**&#xB85C; 설정합니다.<br>
* 화면 왼쪽 아래 코너의 **'Hierarchy'** 버튼을 클릭합니다.
* 검색창에 **'TNT'**&#xB97C; 검색하여 이름에 TNT가 포함된 모든 애셋을 검색합니다.
* 리스트에서 '**TNT - Void**' 애셋을 찾아 타겟 아이콘을 클릭하여 '**TNT - VoidKill**'로 드래그하여 해당 애셋의 자식 오브젝트가 되도록 합니다. 아래 이미지를 참조하세요.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_tXGMupcwxqBY6kSW%2F-MS_z9Ah3EJsjY7TfLv9%2FTNTexplosion_5.png?alt=media\&token=12653db5-a656-46f2-9051-641ad9e4a1c4)

두 개의 아이템을 하나로 만들었습니다. 이제 **'Storage Container'**&#xB97C; 이동하면 **'NumPad Switch'** (Void) 또한 따라오게 됩니다. 그럼 '**TNT - VoidKill**'이라는 '**Storage Container**'를 프리셋으로 만들어 보겠습니다.

* '**TNT - VoidKill**'이라는 '**Storage Container**'를 선택합니다.
* 페이지 왼편의 '**Preset**' 버튼을 클릭합니다.
* '**Create New Preset**'을 클릭하고 '**Next**' 버튼을 클릭합니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_tXGMupcwxqBY6kSW%2F-MSa0Z4u6nUGFfwwHc80%2FTNTexplosion_6.png?alt=media\&token=842e3569-67d3-463c-b794-445d8ddfaf95)

이제 Void가 프리셋으로 만들어졌으니 'TNT'로 돌아가서 방금 만든 '**TNT - VoidKill**' 프리셋에 'Drop' 컴포넌트를 설정해야 합니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_tXGMupcwxqBY6kSW%2F-MSa1fDPlTqfd-NZMDhS%2FTNTexplosion_7.png?alt=media\&token=e8444b35-44ab-4396-8dd3-d0e718247772)

모두 완료되었습니다! 이제 TNT는 폭발할 수 있으며 Storage Containers와 스스로를 파괴하여 게임이 지연되지 않도록 합니다. 그렇다면 재생성은 어떻게 해야 할까요? 아주 쉽게 설정할 수 있습니다!

* 방금 만든 TNT를 선택하고 '**TNT - Box Destroyer**'라는 이름을 붙여 프리셋을 생성합니다. 조금 전 진행했던 작업처럼요.
* **'NumPad Switch'**&#xB97C; 추가하고 '**Asset Spawner**' 비헤이비어를 부여합니다.
* 투명하게 하고 '**No collisions**'로 설정합니다.
* **'Use Preset'**&#xC744; **'True'**&#xB85C; 설정하고 TNT 프리셋, **'TNT - Box Destroyer'**&#xC744; 선택합니다.
* **'Message Required'**&#xB97C; **'tntkillx'**&#xB85C; 설정합니다.
* **'Tag'**&#xC5D0; **'Void'**&#xB97C; 추가합니다.

![](https://4143380045-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MO_j99BJEXK4zHqxgqS%2F-MS_tXGMupcwxqBY6kSW%2F-MSa3ONZmVczd32xXY1f%2FTNTexplosion_8.png?alt=media\&token=49a6b6c9-dab6-4615-82db-a4120e18eecf)

이제 TNT가 폭발하면 투명한 Void와 VoidKill이 생성됩니다. VoidKill이 사망 시 Void를 죽이라는 메시지를 전송하며 Asset Spawner에 새로운 TNT를 생성하라는 메시지 또한 전송합니다. 정말 멋지죠!
