탑다운 뷰에서 아이템이 바닥에 튕기도록 만들어보자.
비어있는 게임 오브젝트를 하나 만들고 오브젝트 안에 아이템 스프라이트와 가상 바닥을 넣어주었다.
탄성을 넣어야 하기 때문에 project 창에서 우클릭 - Create - 2D - Physics Material 2D를 눌러 만들어준다.
https://docs.unity3d.com/kr/530/Manual/class-PhysicsMaterial2D.html
물리 머티리얼 2D(Physics Material 2D) - Unity 매뉴얼
Physics Material 2D 는 2D 물리 오브젝트 간에 충돌이 발생할 때 일어나는 마찰과 탄성을 조정하기 위해 사용합니다. 에셋 메뉴에서 물리 머티리얼 2D를 생성할 수 있습니다(Assets > Create > Physics2D Materia
docs.unity3d.com
마찰과 탄성은 원하는 값으로 지정해 준다.
나는 이 정도로 했다.
아이템이 바닥과 만나 튕길 수 있도록 콜라이더와 리지드바디를 넣어준다.
리지드바디의 Material 부분에 위에서 만들었던 물리 머터리얼을 넣어준다.
또한, 나는 아이템이 y축으로만 튕기기를 원해서 x축과 z축은 고정해 두었다. (사진 맨 밑의 Constraints 참고)
바닥은 아이템 크기에 맞춰 적당히 만들어주고 아이템과 마찬가지로 콜라이더와 리지드바디를 넣어준다.
아이템은 고정되어 있어야 하기 때문에 리지드바디의 Body Type을 Static으로 설정해 준다.
여기까지 만들었다면 아이템은 정상적으로 작동할 것이다.
하지만 아이템 스프라이트와 가상 바닥이 플레이어나 다른 오브젝트와 상호작용 하지 않도록 해줘야 한다!
그렇지 않으면 가상 바닥에 플레이어가 걸려 움직이지 못하거나 하는 상황이 벌어질 수 있다.
최상위 오브젝트에 플레이어와 상호작용하는 코드를 넣고 트리거도 넣어주었다.
Dungeon Item Controller에는 플레이어와 닿으면 아이템이 획득되고 해당 아이템이 없어지는 시스템을 넣어두었다.
Layer도 플레이어와 상호작용이 되는 레이어로 지정해 주었다.
아이템 스프라이트와 가상 바닥은 서로 상호작용 되지만 플레이어와 상호작용 되지 않는 레이어로 지정해 주었다.
레이어 끼리의 상호작용은
Edit - Project Settings - Physics 2D 에서 설정 가능하다.
체크가 된 레이어끼리만 물리 작용을 한다.
'프로그래밍 > 유니티 및 C#' 카테고리의 다른 글
[유니티/C#] 책 UI 만들기 (1) | 2024.01.23 |
---|---|
[유니티/C#] Content 크기에 맞춰 늘어나는 Scroll View 만들기(유동적인 Scroll View) (0) | 2024.01.22 |
[유니티/C#] csv 파일을 원하는 타입으로 읽기(Generic 사용) (0) | 2023.11.08 |
[유니티/C#] Scroll View에 유동적인 Text 넣기 (0) | 2023.11.07 |
[유니티/C#] Json을 원하는 타입으로 읽기/쓰기 (Generic 사용) (0) | 2023.11.03 |