# 캐릭터를 래그돌 또는 잔해로 전환

> Swap an intact GameObject for an instantiated destroyed prefab to switch an object to a wrecked state.

게임에서 캐릭터, 차량, 건물과 같은 에셋을 온전한 상태에서 파괴된 상태로 전환할 수 있습니다. 스크립트 제거, Rigidbody 컴포넌트 추가 등의 방식으로 게임 오브젝트의 온전한 버전을 수정하는 것보다 온전한 게임 오브젝트를 삭제하고 인스턴스화되고 파괴된 프리팹으로 대체하는 것이 더 효율적이고 효과적일 수 있습니다.

이렇게 하면 유연성이 상당히 높아집니다. 파괴된 버전에 다른 머티리얼을 사용하거나, 완전히 다른 스크립트를 연결하거나, 여러 조각으로 분할된 게임 오브젝트가 포함된 프리팹을 인스턴스화하여 난파되거나 부서진 상태를 나타낼 수 있습니다. 이러한 옵션 중 하나를 `Instantiate`에 한 번 호출하여 원본을 삭제하면서 파괴된 버전을 씬으로 가져올 수 있습니다.

가장 중요한 것은 원본과 완전히 다른 게임 오브젝트로 `Instantiate`하여 파괴된 버전을 만들 수 있다는 점입니다. 예를 들어, 파괴 가능한 로봇을 만들기 위해 두 가지 버전을 모델링할 수 있습니다. 하나는 메시 렌더러와 로봇 움직임을 위한 스크립트가 포함된 단일 게임 오브젝트로 구성되고 다른 하나는 물리로 개별적으로 제어할 수 있는 여러 골격 부분으로 구성됩니다.

모델에 삼각형이 더 적기 때문에 작은 파트가 많은 로봇보다 빠르게 렌더링되므로 하나의 게임 오브젝트만으로 모델을 사용할 때 게임이 더 빠르게 실행됩니다. 또한 로봇이 즐겁게 걸어다닐 때는 파트를 분리할 필요가 없습니다.

## 코드 없이 난파된 로봇 프리랩 빌드

코드 없이 난파된 로봇 프리팹을 빌드하려면 다음 단계를 따르십시오.

1. 원하는 3D 모델링 소프트웨어에서 다양한 골격 파트가 많이 있는 로봇을 모델링한 후 Unity 프로젝트의 Assets 폴더로 익스포트합니다.

2. Unity 에디터에 빈 씬을 만듭니다.

3. 모델을 **프로젝트** 창에서 빈 씬으로 드래그합니다.

4. 모든 파트를 선택하고 **Component > Physics > Rigidbody**를 선택하여 모든 파트에 리지드바디를 추가합니다.

5. 모든 파트를 선택하고 **Component > Physics > Mesh Collider**를 선택하여 모든 파트에 콜라이더를 추가합니다(더 빠른 성능을 위해 **Convex** 옵션 활성화).

6. 난파된 로봇의 모든 파트의 부모가 하나의 루트 게임 오브젝트인지 확인합니다.

7. 특수 효과를 더하기 위해 연기 같은 파티클 시스템을 각 파트에 자식 게임 오브젝트로 추가합니다.

8. 이제 폭발 가능한 여러 개의 파트로 구성된 로봇이 완성되었습니다. 모든 파트들은 물리에 의해 제어되므로 바닥에 떨어질 수 있으며, 각 파트는 연결된 파티클 시스템으로 인해 파티클 트레일을 생성합니다.

9. Play를 클릭하여 모델이 어떻게 반응하는지 미리 확인한 후 필요한 사항을 조정합니다.

10. 루트 게임 오브젝트를 **프로젝트** 창의 **Assets** 폴더로 드래그하여 새 프리팹을 만듭니다.

## 코드로 난파된 로봇 프리팹 빌드

다음 예시는 이러한 단계를 코드로 모델링하는 방법을 보여 줍니다.

```
using UnityEngine;
public class WreckOnCollision : MonoBehaviour
{
   public GameObject wreckedVersion;

   void OnCollisionEnter()
   {
       Destroy(gameObject);
       Instantiate(wreckedVersion,transform.position,transform.rotation);
   }
}
```


**발사체에 맞은 후 로봇 프리팹이 난파된 프리팹으로 전환되는 예시:**
![](/api/media?file=/engine/6000.0/media/images/PrefabWreckSwap.gif)

이러한 모든 예시가 포함된 프로젝트를 여기서 다운로드할 수 있습니다. **[InstantiatingPrefabsExamples.zip](/api/download.md?file=/engine/6000.0/media/downloads/InstantiatingPrefabsExamples.zip)**

## 추가 리소스

* [프리팹](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/prefabs.md)
* [GameObject](/engine/6000.0/manual/scripting/get-started/fundamental-unity-types/class-game-object.md)
