캐릭터를 래그돌 또는 잔해로 전환
Swap an intact GameObject for an instantiated destroyed prefab to switch an object to a wrecked state.
읽는 시간 2분최근 업데이트: 한 달 전
게임에서 캐릭터, 차량, 건물과 같은 에셋을 온전한 상태에서 파괴된 상태로 전환할 수 있습니다. 스크립트 제거, Rigidbody 컴포넌트 추가 등의 방식으로 게임 오브젝트의 온전한 버전을 수정하는 것보다 온전한 게임 오브젝트를 삭제하고 인스턴스화되고 파괴된 프리팹으로 대체하는 것이 더 효율적이고 효과적일 수 있습니다.
이렇게 하면 유연성이 상당히 높아집니다. 파괴된 버전에 다른 머티리얼을 사용하거나, 완전히 다른 스크립트를 연결하거나, 여러 조각으로 분할된 게임 오브젝트가 포함된 프리팹을 인스턴스화하여 난파되거나 부서진 상태를 나타낼 수 있습니다. 이러한 옵션 중 하나를 에 한 번 호출하여 원본을 삭제하면서 파괴된 버전을 씬으로 가져올 수 있습니다.
Instantiate가장 중요한 것은 원본과 완전히 다른 게임 오브젝트로 하여 파괴된 버전을 만들 수 있다는 점입니다. 예를 들어, 파괴 가능한 로봇을 만들기 위해 두 가지 버전을 모델링할 수 있습니다. 하나는 메시 렌더러와 로봇 움직임을 위한 스크립트가 포함된 단일 게임 오브젝트로 구성되고 다른 하나는 물리로 개별적으로 제어할 수 있는 여러 골격 부분으로 구성됩니다.
Instantiate모델에 삼각형이 더 적기 때문에 작은 파트가 많은 로봇보다 빠르게 렌더링되므로 하나의 게임 오브젝트만으로 모델을 사용할 때 게임이 더 빠르게 실행됩니다. 또한 로봇이 즐겁게 걸어다닐 때는 파트를 분리할 필요가 없습니다.
코드 없이 난파된 로봇 프리랩 빌드
코드 없이 난파된 로봇 프리팹을 빌드하려면 다음 단계를 따르십시오.
-
원하는 3D 모델링 소프트웨어에서 다양한 골격 파트가 많이 있는 로봇을 모델링한 후 Unity 프로젝트의 Assets 폴더로 익스포트합니다.
-
Unity 에디터에 빈 씬을 만듭니다.
-
모델을 프로젝트 창에서 빈 씬으로 드래그합니다.
-
모든 파트를 선택하고 Component > Physics > Rigidbody를 선택하여 모든 파트에 리지드바디를 추가합니다.
-
모든 파트를 선택하고 Component > Physics > Mesh Collider를 선택하여 모든 파트에 콜라이더를 추가합니다(더 빠른 성능을 위해 Convex 옵션 활성화).
-
난파된 로봇의 모든 파트의 부모가 하나의 루트 게임 오브젝트인지 확인합니다.
-
특수 효과를 더하기 위해 연기 같은 파티클 시스템을 각 파트에 자식 게임 오브젝트로 추가합니다.
-
이제 폭발 가능한 여러 개의 파트로 구성된 로봇이 완성되었습니다. 모든 파트들은 물리에 의해 제어되므로 바닥에 떨어질 수 있으며, 각 파트는 연결된 파티클 시스템으로 인해 파티클 트레일을 생성합니다.
-
Play를 클릭하여 모델이 어떻게 반응하는지 미리 확인한 후 필요한 사항을 조정합니다.
-
루트 게임 오브젝트를 프로젝트 창의 Assets 폴더로 드래그하여 새 프리팹을 만듭니다.
코드로 난파된 로봇 프리팹 빌드
다음 예시는 이러한 단계를 코드로 모델링하는 방법을 보여 줍니다.
using UnityEngine;public class WreckOnCollision : MonoBehaviour{ public GameObject wreckedVersion; void OnCollisionEnter() { Destroy(gameObject); Instantiate(wreckedVersion,transform.position,transform.rotation); }}

발사체에 맞은 후 로봇 프리팹이 난파된 프리팹으로 전환되는 예시
이러한 모든 예시가 포함된 프로젝트를 여기서 다운로드할 수 있습니다. InstantiatingPrefabsExamples.zip