기술 자료

Unity Engine

Unity Engine

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

Swap an intact GameObject for an instantiated destroyed prefab to switch an object to a wrecked state.
읽는 시간 2분최근 업데이트: 한 달 전

게임에서 캐릭터, 차량, 건물과 같은 에셋을 온전한 상태에서 파괴된 상태로 전환할 수 있습니다. 스크립트 제거, 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); }}

발사체에 맞은 후 로봇 프리팹이 난파된 프리팹으로 전환되는 예시

이러한 모든 예시가 포함된 프로젝트를 여기서 다운로드할 수 있습니다. InstantiatingPrefabsExamples.zip

추가 리소스