본문 바로가기

Unity

게임 오브젝트 생성 함수

반응형
반응형

게임 내의 오브젝트를 복제해서 새로운 적을 생성하기 위해서 원본 오브젝트가 필요

  • 원본 오브젝트는 파일로 안전하게 보관 (프리펩)
    • 프리펩? 게임오브젝트를 project view에 파일로 저장해 둔 것
  • 원본으로 사용된 오브젝트가 제거되면 더이상 복제 불가하기 때문

프리펩 생성 방법

  1. 원하는 형태로 게임오브젝트를 꾸며준다
  2. Hierarchy View의 게임 오브젝트를 Project View로 드래그 드롭한다
  3. Hierarchy View 오브젝트 삭제

Instantiate(GameObject obj)

  • 게임 오브젝트를 복제해서 생성
  • 모든 컴포넌트 정보가 원본과 완전히 동일
  • 위 메소드를 여러개 호출 시 여러개 복제됨
  • 파라미터로 Vector, Quanternion(회전 값) 적용 가능

회전값 적용

  • 오일러
    • 3차원 3개 각도 표현하는 3x3 크기 행렬
    • 0~360 각도 표현 가능
    • 연산속도 느림
  • 쿼터니온
    • x,y,z,w 3개의 벡터요소와 1개 스칼라 요소로 구성 (-1~1)
    • 연산은 빠른데 우리가 아는 0~360 표현이 아니르모 특정 각도 표현 어려움

Instantiate에서는 각도 변수로 쿼터니온을 받음

Quaternion rotation = Quaternion.Euler(0,0,각도) 으로 오일러에서 변환 가능

 

Instantiate은 반환 값으로 GameObject를 반환함

GetComponent로 색깔이나 값 변경 가능

Sample

public class Prefab : MonoBehaviour
{
    [SerializeField]
    private GameObject prefab;

    private void Awake()
    {
        Quaternion rotation = Quaternion.Euler(0, 0, 45);
        GameObject clone = Instantiate(prefab, new Vector3(0,0,0), rotation);
        clone.GetComponent<SpriteRenderer>().color = Color.white;
    }
}
반응형

'Unity' 카테고리의 다른 글

게임오브젝트 삭제 함수  (0) 2023.07.24
Instantiate 활용 예제  (0) 2023.07.23
게임오브젝트 물리와 충돌  (0) 2023.07.23
게임 오브젝트 이동  (0) 2023.07.23
이벤트 함수  (0) 2023.07.23