transform 컴포넌트를 통해 오브젝트의 위치를 설정할 수 있다.
아래와 같은 속성을 통해서 값을 지정할 수 있다.
* Vector3 구조체
게임의 2D/3D 공간에서의 이동, 회전, 크기를 표현하기 위해 (x,y) 또는 (x,y,z)의 좌표 체계를 나타내는 단위
유니티에서 제작한 구조체
1단위의 방향 두 점 사이의 거리, 각도 등의 연산을 위한 프로퍼티와 메소드 제공
2차원 공간에서 오브젝트의 물리와 중력을 담당하는 컴포넌트이다.
오브젝트에 해당 컴포넌트를 부여하게 되면 해당 오브젝트는 물리적인 특성을 갖게 된다.
* BodyType
물리적 동작 방식을 결정한다.
* Material
물리적 재질을 결정한다.
Physics Material 2D을 통해 물리적 특성을 정의
rigidbody2D 컴포넌트를 통해서 중력은 바로 적용된다. 하지만 다른 오브젝트와의 상호작용을 요구하는 물리력은
충돌 범위를 나타내는 Collider2D 컴포넌트가 필요하다.
2차원 공간에서 오브젝트의 충돌 범위를 나타내는 컴포넌트이다. 즉 충돌의 범위를 지정한다고 할 수 있다. 이 컴포넌트를 통해 오브젝트끼리의 충돌 여부를 감지할 수 있다. 충돌 범위, 모양에 따라 컴포넌트 이름이 결정된다.
<충돌 영역의 모양에 컴포넌트 유형>
BoxCollider2D : 사각형 모양의 충돌 영역
CircleCollider2D : 원형 모양의 충돌 영역
PoligonCollider2D : 다각형 모양의 충돌 영역 (-> 계산하는데 시간이 오래걸린다.)
EdgeCollider2D : 선형 모양의 충돌 영역
CapsuleCollider2D: 캡슐 형태의 충돌 영역
CompositeCollider2D: 여러개의 Collider2D를 결합해 복잡한 충돌 영역 생성
* Collider2D의 Trigger 설정
Collider2D에는 Trigger 설정이 가능하다. Trigger을 설정하면 물리적 충돌은 발생하지 않지만, 충돌 이벤트는 발생한다.
OnTriggerEnter2D(): 다른 Collider2D가 트리거 영역에 들어갈 때 호출.
OnTriggerStay2D(): 다른 Collider2D가 트리거 영역 내에 있을 때 호출.
OnTriggerExit2D(): 다른 Collider2D가 트리거 영역을 벗어날 때 호출
두 오브젝트의 충돌 및 물리력을 가지려면 둘 다 Collider2D 컴포넌트는 가져야 하고 두 오브젝트 중 하나 이상은 Rigidbody2D 컴포넌트를 가지고 있어야 한다. (RigidBody를 가지고 있는 쪽에서만 물리 현상이 발생한다.)
+ Gizmos
유니티 에디어테서만 보이는 시각적 디버깅 도구이다.
게임 오브젝트의 위치, 범위, 충돌 영역 등을 확인할 수 있도록 해준다. 다양한 메서드를 통해 도형을 그려서 시각화 할 수 있다.
오브젝트를 동적으로 생성할 때 사용하는 함수이다. 게임에서 적을 스폰하거나 총알을 발사하는 곳 등에 사용할 수 있다.
* prefab
기존에 정의된 게임 오브젝트를 재사용 가능하도록 만든 템플릿이다. 게임 내에서 동일한 형태의 여러 오브젝트를 생성할 때 원본과 복제본 상태로 존재하면, 원본이 사라졌을 때 복제본은 복제의 대상이 사라져 사용이 불가능하게 된다. 이를 해결하기 위해 게임 오브젝트를 하나의 파일로 저장해두어 동일한 오브젝트를 여러번 재사용할 수 있도록 만들었다. 특히 Instantiate() 함수를 통해 동적으로 생성할 수 있다.
# 함수 사용법
Instantiate ( boxPrefab, new Vector3(3, 3, 0), Quaternion.identity );
prefab 지정, 생성될 위치 지정, 오브젝트 각도 지정
* DrawCall
그래픽 렌더링 과정 중 GPU에게 그리기 명령을 보내는 작업이다.
이 값은 성능에 많은 영향을 끼치며, 성능이 낮은 디바이스로 게임이 진행되는 경우에 이 수를 최소화 하는 것이 좋다.
*Batches
DrawCall을 최적화 하는 기법 중 하나이다.
여러개의 오브젝트를 한 번에 처리할 수 있도록 묶는다.
동일한 sprite에 대해서는 하나의 Batches만 증가한다.
*sprite
2D 그래픽에서 사용되는 이미지나 애니메이션의 일부분으로 객체를 나타내는 기본 단위이다.
일반적으로 캐릭터, 아이템, 배경, UI 요소 등 다양한 2D 요소를 표현하는데 사용된다.
여러장의 sprite 이미지를 한 장의 텍스처에 모아서 사용하는 것이다. 이것으로 DrawCall을 줄여 성능을 향상시킬 수 있다.
위의 그림처럼 모든 텍스처에 다양한 이미지를 넣어두고 사용하게 된다.
*주의점
다음처럼 Batch가 줄어들면 게임에서 모든 이미지를 sprite atlas로 묶는게 항상 좋을 거라고 생각이 된다.
하지만 그렇게 하면 특정한 하나의 이미지만을 불러올 때도 텍스처에 있는 모든 이미지를 불러오게 된다.
그렇기 때문에 한 화면 혹은 하나의 오브젝트에서 사용되는 등의 관련이 있는 이미지들을 sprite atlas로 묶어서 사용하는 것이 좋다.
* POT (Power of Two)
텍스처의 가로 세로의 크기가 2의 제곱인 텍스처이다.
이를 통해 텍스처가 GPU에서 더 효율적으로 처리될 수 있다. POT 텍스처는 결론적으로 GPU의 성능을 극대화하고 메모리 효율성을 증가 시키며, 다양한 플랫폼에서의 호환성을 보장한다.
해당 포스트는 고박사, [따라하면서 배우는 고박사의 유니티 기초], (2024, 10월 8일), 섹션 2. 유니티 2D 기초 (Unity 2D Basic) 강의를 참고하여 작성하였습니다.
Corner Unity
Editor : 니나노
[유니티 소소모임] 2주차. 유니티 에디터 배우기 1 (Editor: 동동) (1) | 2024.10.11 |
---|---|
[유니티 소소모임] 2주차. 유니티 에디터 배우기 1 (Editor : Ijin) (1) | 2024.10.11 |
[유니티 소소모임] 1주차. 유니티 기초 (Editor: Luna) (4) | 2024.10.04 |
[유니티 소소모임] 1주차. 유니티 기초 (Editor: Hetbahn) (0) | 2024.10.04 |
[유니티 소소모임] 1주차. 유니티 기초 (Editor: Borybop) (0) | 2024.10.04 |