Unity/Unity 2D

Unity 2D 물리 레퍼런스에 대해 알아보자

tangent0426 2024. 9. 10. 18:00
728x90
반응형

 


저번 시간에는 3D 모델이나 오디오 파일, 이미지 등 외부에서 생성한 파일을 가져올 수 있는 에셋과

캐릭터, 배경화면 등 애니메이션 설정 가능한 애니메이션 클립, 컨트롤러에 대해 알아보았었죠

이번시간에는 물체에 작용하는 물리적 현상, 중력 및 충돌에 대해 알아볼까 합니다.


 

 

Unity 2D Asset(에셋) 및 애니메이션에 대해 알아보자

저번 시간에는 비주얼 스크립트로 제어문, 조건문, 반복문에 대해 알아본 시간을 가졌죠이번시간에는 게임이나 프로젝트에서 사용될 수 있는 다양한 아이템을 추가할 수 있는 에셋과 캐릭터,

tangent0426.tistory.com

 

물리 및 충돌 처리 개요

 

물리 및 충돌 처리 개요
개요 물체에 작용하는 물리적 현상, 중력이나 충돌등에 관한 부분을 처리하는 프로그래밍 파트 
Unity에서 제공하는 물리엔진을 사용하면 좀 더 사실적 으로 제작 할 수 있음 
Unity의 물리엔진의 종류로는 2D와 3D로 나누어져 있음

 

물리 및 충돌 처리 개요
콜라이더
(Collider)
오브젝트의 물리 충돌을 처리하는 역할
정적 콜라이더
(Static Collider)
움직이지 않는 벽, 바닥과 같은 오브젝트에 사용됨
움직이면 안되는 오브젝트를 움직이지 못하게 하는데 사용 
리지드바디 콜라이더
(Rigidbody Collider)
물리적 충돌 및 중력을 제어하는 데 사용 
키네메틱 리지드바디 콜라이더
(Kinematic Rigidbody Collider)
외부에서 가해지는 물리적 힘에 반응하지 않는 오브젝트라는 의미
상황에 따라 반응하는 방문이나 창문과 같은 객체에 사용할 수 있음

 

0

 

트리거는 두 물체가 튕겨져 나가는 등의 충돌 이벤트 없이 통과가 되지만 트랩에 설정된 이벤트가 발생합니다.

공포게임에서 특정 지역을 지나면 귀신 사진이 나오며, 결승선을 통과하면 게임에서 이깁니다.

 

0

 

두 물체가 튕겨져 나가는 등의 충돌 이벤트를 감지하며, 공이 벽에 부딪치면 튕겨져 나갑니다.

총알이 벽에 충돌하면 총알이 파괴됩니다.

 

물리 및 충돌 처리 예제

0

 

두 물체 충돌 시 ConSol창에 물리 충돌하는 예제를 만들어봅시다.

 

 

도형 오브젝트를 생성하기 위해 Hierarchy창에 있는‘+’아이콘을 클릭하여

2D Object -> Sprites -> Square를 클릭하여 오브젝트를 생성 4개 오브젝트 추가 합니다.

 

 

박스형 오브젝트를 클릭하고  Inspector창에서 Add Component버튼을 눌러 Box Collider 추가합니다.

 

 

플레이어에 오브젝트를 클릭하고, Inspector창에서 Add Component버튼을 눌러

Rigidbody2D와 Capsule Collider 2D 추가합니다.

 

 

각 도형 오브젝트에 Add Component버튼을 눌러 Script Machine 컴포넌트 생성하여 Visual Scripting 생성합니다.

 

 

키 입력을 받으며 유닛 입력을 넣으면 오브젝트의 방향 전환이 가능해집니다.

 

 

두 값을 곱해 결과 값을 반환하는 유닛입니다.

 

 

Rigidbody 2D 컴포넌트의 변수 값만 설정하여 오브젝트를 이동시킵니다.

 

 

콘솔 창에 로그를 올려주게 만드는 유닛입니다.

 

0

이번에는 콜리전으로 두 물체 충돌 시 물체가 통과 되지 않게 만들어 봅시다.

 

 

 

플레이어 오브젝트와 충돌할 오브젝트 생성합니다.

 

 

충돌할 오브젝트에 Polygon Collider 2D 생성합니다.

 

 

충돌시킬 오브젝트에 On Trigger Enter 2D 추가합니다.

 

 

플레이어 오브젝트에 키 조작 코드와 Rigidbody 2D 와 Box Collider 2D 생성합니다.

 

 

물리 및 충돌 처리 개요

 

박스 콜라이더 2D
개요 충돌 범위가 사각형으로 설정되는 2D 물리충돌을 감지하는데 사용됨
Material(재료) 마찰이나 바운스와 같은 충돌 프로퍼티를 결정하는 물리 머티리얼
머티리얼 : (빛에 따른 종이의 그림자 효과를 이용하여 입체감을 살리는 디자인 방식)
Is Trigger(트리거) 박스 콜라이더 2D가 트리거로 동작하도록 하려면 이 상자를 선택
Used by Effector(이펙터에서 사용) 박스 콜라이더 2D가 연결된 이펙터 2D 컴포넌트 의해 사용되길 원할 경우 이 상자를 선택
Used by Composite(복합에서 사용)
콜라이더가 연결된Composite Collider 2D에서 사용되도록 하려면 이 체크박스를 선택

 

 

Auto Tiling(자동 타일링) Draw Mode가Tiled로 설정돼 있을 경우 이 체크박스를 선택
 이 경우 콜라이더 2D의 모양이 자동으로 업데이트 됨
Offset(오프셋) 콜라이더 2D의 로컬 오프셋을 설정
Size(크기) 로컬 공간 단위로 나타난 박스 크기를 설정
Edge Radius(가장자리 반경) 원 모양이 되도록 모서리 주변의 반지름을 조정
이 경우 원 모양의 코너로 된콜라이더 2D의 크기는 커지게 됨

 

 

써클 콜라이더 2D
개요 Circle Collider 2D 클래스는 2D 물리와 함께 사용하는 콜라이더, 콜라이더의 모양은 원모양
Material(재료) 마찰이나 바운스와 같은 충돌 프로퍼티를 결정하는 물리 머티리얼
머티리얼 : (빛에 따른 종이의 그림자 효과를 이용하여 입체감을 살리는 디자인 방식)
Is Trigger(트리거) 써클 콜라이더 2D가 트리거처럼 작동하도록 하려면 이 상자를 선택
Used by Effector(이펙터) 써클 콜라이더 2D가 연결된 이펙터 2D에서 사용되길 원할 경우 이 상자를 선택
Offset(오프셋) 써클 콜라이더 2D 지오메트리의 로컬 오프셋(처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형)
Radius(반지름)
로컬 공간 단위로 나타낸 원의 반지름을 나타냄

 

 

폴리곤 콜라이더 2D
개요 Polygon Collider 2D 컴포넌트는 2D 물리와 함께 사용하는 콜라이더
이콜라이더의 에지는 (유사한 Edge Collider 2D와 달리) 한 영역을 완전히 둘러싸야 함
Material(재료) 마찰이나 바운스와 같은 충돌 프로퍼티를 결정하는 물리 머티리얼
Is Trigger(트리거) 콜라이더를 트리거로 사용하려면 이 박스를 선택
Used by Effector(이펙터) 연결된 이펙터에서 콜라이더가 사용되는지 여부를 설정
Used by Composite(복합) 콜라이더가 연결된Composite Collider 2D(복합 콜라이더)에서 사용되도록 하려면 이 체크박스를 선택

 

Used by Collider(충돌체) 연결된Composite Collider 2D(복합 콜라이더)컴포넌트에서 박스 콜라이더 2D가 사용되도록 하려면 상자를 선택
Auto Tiling(자동 타일링) 콜라이더 2D 형태의 자동 업데이트가 가능함
Auto Tiling을 활성화하지 않으면 스프라이트의 크기가 변해도 콜라이더 2D가 동일한 형태와 크기로 유지
Offset(오프셋) 콜라이더 지오메트리의 로컬 오프셋
Points(포인트) 생성된 콜라이더의 복잡성에 대한 편집할 수 없는 정보

 

물리 및 충돌 처리 예제( 충돌 했을 경우 Consol창에 뛰우기)

 

각 콜라이더 모양 및 크기 조절 -> 각 콜라이더의 모양등을 비교합니다.

 

 

오브젝트 클릭 -> Add Component에서 Box Collider 2D 추가합니다.

 

 

오브젝트 클릭 -> Add Component에서 Polycon Collider 2D 추가합니다.

 

 

오브젝트 클릭 -> Add Component에서 Circle Collider 2D 추가합니다.

 

 

플레이어에 플레이어에 리지드바디와 써클콜라이더를 추가하여,

써클 콜라이더를 씬에 있는 오브젝트 크기와 맞추어 설정 ,Static은 콜라이더의 상호작용을 나타냅니다.

 

 

비주얼 스크립트를 생성하여

Log 검색으로 Debug 유닛 추가, String 검색으로 String Literal 유닛 추가, on Trigger Enter 2D를 추가합니다.

 

0

 

실행하여 Consol창에 잘 나오는지 확인합니다.

 

이것으로 물리 레퍼런스에 대해 알아보았습니다.

 

읽어주셔서 감사합니다.^^

 

반응형