반응형

Player의 Rigidbody2D 컴포넌트 화면

유니티에서는 캐릭터의 기본적인 물리 기능을 구현할 때 Rigidbody라는 컴포넌트를 사용합니다.

컴포넌트라는 것은 유니티의 게임 오브젝트에 다양한 기능을 구현하게 만들어 주는 부품이라고 보시면 됩니다.

 

화면에 파란색 텍스트로 되어있는 Collision Detection이라는 것이 보이시나요?

이 설정값에 따라 오브젝트 간 충돌을 검사하는 방식이 달라집니다.

설정값은 Discrete(이산)과 Continuous(연산)이 있습니다.

 

이산(Discrete)

착지과정에서 땅에 발이 들어간 모습

이산 충돌 검사의 경우 Rigidbody2D가 적용된 오브젝트의 위치를 미리 예측합니다.

때문에 빠르게 움직이거나, 작은 물체 간의 충돌검사에서는 정확하지 않을 수 있습니다.

위 사진은 점프 후 착지 상태를 캡처한 것입니다.

 

연산(Continuous)

정상적으로 착지된 모습

연산 충돌 검사의 경우 이동하면서 생기는 충돌을 비교적 정확하게 검사합니다.

정교한 충돌 감지를 원한다면 Collision Detection 옵션을 Continuous로 설정해 주시면 되겠습니다.

 

 

 

 

반응형
반응형

게임 화면

레이어의 역할

 

유니티에서 Sorting Layer와 Order in Layer는

게임 오브젝트들이 화면상에서 어떻게 그려질지 결정하는 데에 사용됩니다.

위 그림은 2D게임의 한 장면입니다.

이미지 자체가 원근감을 주기도 하지만 레이어가 따로 설정되어 있습니다.

포토샵의 레이어와 비슷한 개념이라고 생각하셔도 좋을 거 같아요.

 

Sorting Layer와 Order in Layer

 

Sorting Layer와 Order in Layer 모두 게임 오브젝트들이 그려지는 순서를 결정하는 데에 사용됩니다.

Sorting Layer 설정창

Sorting Layer의 경우 가장 위에 있는 레이어가 가장 먼저 그려집니다.

사진 상에서 Layer 0이 가장 위에 위치하고 있습니다.

즉, 가장 뒤에 그려진다는 얘기입니다.

 

BackGround 레이어가 "Layer0", Player레이어가 Layer3으로 설정되어 있습니다. 

땅과 벽, 풀 등은 World레이어(Layer1)로 설정되어 있습니다.

아래 사진을 보시면 하늘색 배경이 가장 뒤에, 우거진 수풀이 그다음에,

풀, 벽, 땅 등이 그려지고 마지막에 플레이어가 위치한 모습을 볼 수 있습니다.

수풀 앞에 여우가 그려진 모습

 

그런데 사진을 보다 보니 의문이 하나 생깁니다.

수풀과 배경 모두 BackGround Layer에 포함되어 있습니다.

즉,  Sorting Layer가 같습니다.

그런데 왜 파란색 배경이 뒤에 그려지는 것일까요?

좌측 : 파란배경 오브젝트 / 우측 : 우거진 수풀 오브젝트

동일한 Sorting Layer에서는 Order in Layer의 값이 그려지는 위치를 다르게 합니다.

back 오브젝트가 '파란색 배경', middle 오브젝트가 '우거진 수풀'입니다.

앞서 말한 바와 같이 Sorting Layer값은 BackGround로 동일하지만,

Order in Layer 값이 다릅니다.

back 오브젝트는 -2, middle 오브젝트는 -1입니다.

즉 값이 낮을수록 뒤에 그려집니다.

 

Sorting Layer와 Order in Layer를 따로 사용하는 이유

 

지금처럼 오브젝트가 많지 않은 경우는 Order in Layer만 사용해도 관리가 쉬울 것입니다.

그런데 게임에 사용되는 오브젝트가 수천 개가 넘어간다면 어떻게 될까요?

오브젝트 하나하나 Order in Layer의 값을 조정해 주는 건 어렵고, 비효율적인 일이 될 겁니다.

그래서 오브젝트의 성질에 따라 Sorting Layer로 분류를 해주고,

세부적인 조정은 Order in Layer로 해주는 것입니다.

 

즉, '효율적인 관리'를 위해 Sorting Layer와 Order in Layer를 혼용한다고 생각하면 될 거 같아요.

반응형

+ Recent posts