프로그래밍/유니티 및 C#

[유니티 2D/C#] 탑다운 뷰에서 아이템이 바닥에서 튕기는 연출 만들기

바토파 2023. 11. 10. 17:51
반응형

아이템이 튕기는 장면

탑다운 뷰에서 아이템이 바닥에 튕기도록 만들어보자.

 

프리팹 구조

비어있는 게임 오브젝트를 하나 만들고 오브젝트 안에 아이템 스프라이트와 가상 바닥을 넣어주었다.

 

탄성을 넣어야 하기 때문에 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 에서 설정 가능하다.

Project Settings - Physics 2D

체크가 된 레이어끼리만 물리 작용을 한다.

반응형