원본 오브젝트
- 게임에서 오브젝트를 복제 생성하기 위해 필요.
- 게임 내부에 있는 오브젝트를 사용하지 않음.
예) 플레이어에 의해 원본으로 사용되던 것이 죽게 되어 더 이상 복제를 할 수 없게 됨.
- 프로젝트 뷰에 파일로 저장해둔 프리팹(Prefeb)을 이용.
프리팹(Prefeb)
- 안전하게 보관되어 있는 파일 형태.
- 게임에 존재하는 게임 오브젝트 project view에 파일로 저장해 둔 것.
생성

1. 원하는 형태로 게임오브젝트를 꾸며줌.

2. Hierarchy View의 게임오브젝트를 Project View로 드래그&드롭함.

3. Hierarchy View에 있는 게임오브젝트를 삭제하여 project에 있는 오브젝트를 Hierarchy로 이동.
Instantiate(원본오브젝트 정보)

- original 게임오브젝트를 복제해서 생성.
- 복제되는 오브젝트의 모든 컴포넌트 정보가 원본과 동일.

- 새로운 빈 오브젝트를 만들어 해당 코드 script 적용.
- 윗 사진처럼 어떤 프리팹을 등록할 지 보여줌.


- square 게임오브젝트를 등록한 후 실행하면 프리팹을 복제해서 만든 스퀘어라고 하는 오브젝트 생성
- 코드에서 "Instantiate(boxPrefab);" 의 수에 따라 박스 생성.
Instantiate(GameObject original, Vector3 position, Quaternion rotation);
: original 프리팹을 복제해서 생성하고, 생성된 복제본의 위치를 position으로, 회전을 rotation으로 설정.
쿼터니온(Quaternion) & 오일러(Euler)
- 쿼터니온(Quaternion) : 3차원의 3개 각도를 표현하기 위해 사용하는 3x3 크기의 행렬.
- 일러(Euler) : 사원수로 3개의 백터 요소와 하나의 스칼라 요소로 구성.

- 해당 코드를 반영하면 게임 오브젝트는 회전함.
GameObject clone = Instantiate(GameObject original, Vector3 position, Quaternion rotation);
: original 프리팹을 복제해서 생성하고 생성된 복제 오브젝트의 정보를 clone에 저장. 현재 코드에서 clone과 방금 생성된 박스 오브젝트는 동일.

- 코드를 통해 위치, 크기, 색 모두 변형 가능한 것을 확인할 수 있음.
삭제
Destroy(Component);
- 오브젝트 삭제 함수로 매개변수에 입력되어 있는 오브젝트 및 컴포넌트를 삭제함.


- Destroy 게임오브젝트에 Player object에 Player 오브젝트 적용.
- 실행하면 player 컴포넌트가 게임에서 사라지는 것을 확인할 수 있음.
Destroy(GameObject);

- 실행하면 게임 오브젝트 자체가 사라짐
Destroy(GameObject);
- 게임오브젝트를 time 시간만큼 흐른 뒤에 삭제됨.
조건문 작성

- 조건문을 작성하여 오브젝트 x 또는 y 범위 벗어나면 삭제가 되도록 설정 가능.
장애물과 충돌하면 오브젝트 삭제

- 장애물 벽을 생성.
- 총알을 쏴서 부딪히면 설정한 색상 red로 벽 색깔이 변함.
Instantiate() 활용
반복문을 이용한 오브젝트 생성

- 원하는 갯수만큼 오브젝트를 복제해서 생성하는 예제
- 반복의 사용되는 변수 i를 이용해 오브젝트에 x 위치와 회전 증가하도록 설정.



- 로테이션 회전 값이 z 축으로 10씩 회전하는 것 또한 볼 수 있음.

- 4x4 격자
- 외부 반복문 : 격자의 y축
- 내부 반복문 : 격자의 x축

'유니티' 카테고리의 다른 글
유니티 04. 2D 스프라이트 / 애니메이션 (1) | 2024.05.01 |
---|---|
유니티 04. 플랫폼 게임에서의 플레이어 이동, 점프 구현 (1) | 2024.05.01 |
유니티 02. 게임오브젝트 (0) | 2024.04.10 |
유니티 02. 이벤트 함수 (0) | 2024.04.10 |
유니티 01. 에디터 인터페이스, 게임 오브젝트 & 컴포넌트 (0) | 2024.04.03 |