Version: Unity 6.0 (6000.0)
언어 : 한국어
프리팹으로 구조 구축
Prefab instance Inspector reference

발사체 및 폭발 인스턴스화

이 예시에서는 플레이어가 발사 버튼을 누르면 Launcher 게임 오브젝트가 발사체 프리팹을 인스턴스화합니다. 프리팹에는 메시, 리지드바디, 콜라이더가 포함되어 있으므로 공기를 통과하여 충돌이 발생하는 시점을 감지할 수 있습니다.

발사체가 무언가와 충돌하여 폭발 프리팹을 인스턴스화합니다. 폭발 프리팹에는 파티클 시스템 효과, 그리고 주변 게임 오브젝트에 힘을 가하는 스크립트가 포함됩니다.

블록 예시와 동일한 방식으로, 발사체 프리팹이 얼마나 복잡한지에 상관없이 발사체를 코드 한 줄로 인스턴스화할 수 있습니다. 프리팹을 인스턴스화한 후에는 인스턴스화된 게임 오브젝트의 모든 프로퍼티도 수정할 수 있습니다. 예를 들어 발사체 리지드바디의 속도를 설정할 수 있습니다.

사용하기 쉬우면서도 나중에 코드를 수정하지 않고도 프리팹을 수정할 수 있습니다. 발사체가 로켓인 경우 나중에 파티클 시스템을 추가하여 연기 흔적을 남기도록 할 수 있습니다. 이렇게 하면 인스턴스화된 모든 로켓에 파티클 트레일이 생깁니다.

다음은 Instantiate 메서드를 사용하여 발사체를 발사하는 스크립트의 예입니다.

using UnityEngine;
public class FireProjectile : MonoBehaviour
{
    public Rigidbody projectile;
    public float speed = 4;
    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Rigidbody p = Instantiate(projectile, transform.position, transform.rotation);
            p.velocity = transform.forward * speed;
        }
    }
}

코드에서 프리팹 변수 유형은 게임 오브젝트가 아니라 리지드바디입니다. 여기에는 두 가지 유용한 효과가 있습니다.

  1. 이 변수에는 Rigidbody 컴포넌트가 있는 게임 오브젝트만 할당할 수 있습니다. 이는 변수에 올바른 게임 오브젝트를 할당하는 데 도움이 되므로 유용합니다.

  2. Instantiate 메서드는 새 인스턴스의 Rigidbody 컴포넌트에 대한 레퍼런스를 반환합니다. 이는 인스턴스화 후 즉시 리지드바디의 속도를 간편하게 설정할 수 있으므로 유용합니다.

public 프리팹 변수를 만들 때 변수 유형은 게임 오브젝트, 또는 임의의 유효한 컴포넌트 유형(빌트인 Unity 컴포넌트 또는 자체 MonoBehaviour 스크립트 중 하나)일 수 있습니다.

게임 오브젝트 유형 변수의 경우 변수에 게임 오브젝트를 할당하면 Instantiate 함수가 새로운 게임 오브젝트 인스턴스에 대한 레퍼런스를 반환합니다.

컴포넌트 유형 변수(예: 리지드바디, 콜라이더, 광원)의 경우 해당 컴포넌트 유형의 게임 오브젝트만 변수에 할당할 수 있습니다. 그러면 Instantiate 함수가 새로운 게임 오브젝트 인스턴스에서 해당 컴포넌트에 대한 레퍼런스를 반환합니다.

다음 스크립트(발사체 프리팹에 배치됨)는 발사체의 현재 위치에서 폭발을 인스턴스화하고, 발사체가 무언가와 충돌하면 발사체 게임 오브젝트를 제거합니다.

using UnityEngine;
public class Projectile : MonoBehaviour
{
   public GameObject explosion;
   void OnCollisionEnter()
   {
       Instantiate(explosion,transform.position,transform.rotation);
       Destroy(gameObject);
   }
}
인스턴스화된 후 충돌 시 폭발 프리팹으로 교체되는 발사체 프리팹의 예
인스턴스화된 후 충돌 시 폭발 프리팹으로 교체되는 발사체 프리팹의 예

플레이 모드에서 실행되는 스크립트를 보여주는 위 이미지에서 인스턴스화된 게임 오브젝트는 계층 구조에 나타나며, 이름에 (Clone)이 붙습니다.

추가 리소스

프리팹으로 구조 구축
Prefab instance Inspector reference
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961