Unity/Tip

· Unity/Tip
2D 탑다운 게임을 개발하다보면 점프를 구현해야하는 경우가 종종있습니다. 오늘은 제가 사용하는 간단한 방법에 대해서 소개해 드리겠습니다. 제가 사용하는 방법을 간단하게 설명드리면, 먼저 2D 탑다운 게임에서 높이가 있다는 것을 표현할려면 그림자가 있어야합니다. 그리고 그 그림자를 만들어내는 오브젝트가 있겠죠. 따라서 게임오브젝트의 계층구조를 아래와 같이 만듭니다. Body오브젝트가 그림자를 그려내는 오브젝트가 되겠죠. 스프라이트는 정사각형을 사용했습니다. 이 상태에서 점프를 구현하려면 Body오브젝트만 위아래로 움직여주면 되겠죠. 그리고 Body오브젝트가 충분히 그림자에 가까워 졌다면 점프가 끝난것이라고 가정하면됩니다. 아래와 같은 코드가 되겠죠. private void Update() { if (isG..
· Unity/Tip
유니티에서 UI작업을 하다 보면 내가 원하는 위치에 UI요소를 위치시키는 게 어려운 경우가 가끔 있습니다. 이는 사실 인스펙터에 노출되는 RectTransform의 위치값이 직관적이지 않기 때문이기도 합니다. RectTransform의 PosX, PosY 값은 Pivot의 위치가 Anchor의 위치로부터 얼마만큼 떨어져 있는지를 나타냅니다. $1000\times1000$ 크기의 화면에서 작업을 하고 있다고 가정해 봅시다. Image 오브젝트를 하나 생성하면 아래와 같은 화면이 될 것입니다. 현재는 Anchor도 정중앙에 있고, Pivot도 이미지의 정중아에 있기 때문에 PosX와 PosY가 $(0,0)$으로 나오죠. 이 상태에서 Anchor의 위치를 좌측아래로 바꾸면 PosX와 PosY의 값이 스크린 스..
· Unity/Tip
눈누는 상업용 무료한글폰트 사이트이고 정말 많은 폰트들이 존재하기 때문에 웬만하면 나의 게임에 어울리는 폰트를 찾을 수 있을 겁니다. 눈누에서 다운로드할 수 있는 폰트파일의 포맷은 TTF와 OTF로 나뉘게 되는데, 쉽게 설명하면 TTF는 애플에서 개발한 1세대 포맷이고 OTF는 마이크로소프트가 개발한 2세대 포맷입니다. 폰트를 만들 때 곡선을 구현하는 방식의 차이로 OTF가 좀 더 선명한 폰트를 만들어 내지만 컴퓨터 리소스를 조금 더 잡아먹게 됩니다. 하지만 컴퓨터 성능의 발전과 육안으로(적어도 저는) 일반적인 사이즈의 모니터에서 TTF와 OTF를 구분하기 힘들다는 점을 생각했을 때, 대부분의 경우 그냥 아무거나 써도 무방할 것 같습니다. 1. 눈누에서 원하는 폰트 다운로드하기 눈누 상업용 무료한글폰트 ..
· Unity/Tip
캔버스 스케일러(Canvas Scaler) 컴포넌트는 캔버스 내 UI 요소의 전체적인 스케일과 픽셀 밀도를 제어하는 데 사용됩니다. 해당 컴포넌트를 생성하면 아래와 같은 기본값을 가지는 것을 볼 수 있습니다. 이번 포스팅에선 UI Scale Mode 값의 변화에 따라 UI요소들이 어떻게 변하는지를 집중적으로 살펴보겠습니다. (Constant Physical Size Mode는 UI요소들의 크기를 물리적 수치로 조절하는 모드인데 거의 사용하지 않으므로 설명은 생략하겠습니다.) Constant Pixel Size Mode 유니니 문서를 보면 "UI 요소가 화면 크기에 관계없이 동일한 픽셀 크기로 유지됩니다."라고 명시되어 있습니다. 이 말은 개발자가 Full HD($1920\times1080$) 해상도를 기..
· Unity/Tip
스크립트상에서 아래와 같은 함수를 사용할 때 이진법 숫자 $1$을 레이어 번호만큼 시프팅 해서 사용해야 하는데, 왜 굳이 이렇게 사용하는 걸까요? Physics2D.OverlapCircleAll(this.transform.position, 5.0f, 1
· Unity/Tip
Sprite와 Texture는 둘다 이미지다. 하지만 용도에 차이가 있다. Sprite는 2D 오브젝트에 쓰이며 좌표를 가진다. 좌표를 가진다는 말은 움직일 수도있고 인게임내에서 생성되거나 파괴될수있다. Texture는 오브젝트의 외형을 바꾸기위해 사용된다. 예를 들어 큐브면에 Textrue를 설정할수있다. 하지만 Texture는 오브젝트가 아니다. 따라서 게임중 Texture를 움직일 수는 없다.
· Unity/Tip
이 포스팅에서는 객체지향 프로그래밍 원칙으로 유명한 S.O.L.I.D 원칙을 유니티에 적용하여 이해하기 쉽고 유연하며 유지보수가능한 코드구조를 만드는 방법을 설명합니다. SRP(Single Responsibility Principle): 단일 책임 원칙 클래스를 변경해야 할 이유는 오직 한가지여야 한다. 유니티에 이 원칙을 적용시켜보면, 컴포넌트 단위로 생각해볼 수 있다. 즉, 게임 오브젝트는 한가지 목적을 위해 만들어진 여러개의 컴포넌트의 조합으로 구성되어야한다고 할수 있다. 따라서 Player.cs, Enemy.cs 와 같은 목적을 알 수 없는 컴포넌트가 아니라, PlayerInput.cs, Health.cs, WeaponHandler.cs 와 같은 분명한 목적을 가진 컴포넌트를 작성해야 한다는 뜻이..
· Unity/Tip
URP환경에서 그림자 설정은 Universal Render Pipeline Asset에서 설정할 수 있다. 이 파일을 열어보면 여러개의 탭이 있는데, Lighting탭과 Shadows탭을 건들여줘야된다. Lighting Lighting탭에보면 Main Light 하위에 Shadow Resolution이라는 값이 있는데, 이는 Main Light에 대한 섀도우맵 텍스쳐의 크기를 제어한다. 이 값을 높이면 높일수록 더 매끈하고 디테일한 그림자를 얻을 수 있다. 그 다음 Additional Lights하위에 Shadow Atlas Resolution이라는 값이 있다. 마찬가지로 Additional Lights에 대한 섀도우맵 텍스쳐의 크기를 조절한다. 이 역시 값을 높이면 높일수록 더 좋은 그림자를 얻을 수 ..
YMS Games
'Unity/Tip' 카테고리의 글 목록