하참이의 아이디어노트

Unity 강의 1일차 (7) - 머티리얼 본문

Unity/Unity 기초

Unity 강의 1일차 (7) - 머티리얼

하참이 2025. 1. 15. 17:08

본 강의는 다음 문서를 참고하여 제작하였습니다. 자세한 내용은 하단 문서를 참고하시거나 댓글로 질문 주시면 성심성의껏 답변해드리겠습니다.

 

https://learn.unity.com/tutorial/3d-geim-obeujegteue-hyogwa-guhyeon?uv=2019.4&pathwayId=62c27b36edbc2a1cd6fae3aa&missionId=62d8af8aedbc2a352ecbdeb7&projectId=62d7b2fcedbc2a08e82c8ab7#

 

3D 게임 오브젝트에 효과 구현 - Unity Learn

이 튜토리얼에서는 3D 씬에서 구현할 수 있는 시각 효과와 물리 효과에 대해 알아봅니다. 배울 내용은 다음과 같습니다. 새 머티리얼을 만들고 설정해 게임 오브젝트에 비주얼 프로퍼티를 추가

learn.unity.com

 


 

 

머티리얼 (Material)은 직역하면 '재료'입니다. 유니티에서는 게임 오브젝트를 구성하는 재료를 표현하기 위해 머티리얼이란 컴포넌트를 사용합니다. 유리로 만들어진 게임 오브젝트를 나타내기 위해선 맨질맨질하고 투명한 머티리얼을 사용해야 할 것이고, 블록을 나타내기 위해선 패턴이 있고 갈색의 머티리얼을 사용해야 할 것 입니다.

 

 

머티리얼(Material)은 게임 오브젝트 표면의 특징과 이러한 표면이 광원과 상호 작용하는 방식을 정의하는 컴포넌트입니다.

 

 

 

시작하기 전에 이하의 파일을 다운받습니다.

 

출처 : https://learn.unity.com/tutorial/3d-geim-obeujegteue-hyogwa-guhyeon?uv=2019.4&pathwayId=62c27b36edbc2a1cd6fae3aa&missionId=62d8af8aedbc2a352ecbdeb7&projectId=62d7b2fcedbc2a08e82c8ab7#

 

 

 

 

 

 

그리고 이 이미지 파일을 Unity Editor에 불러와야합니다. 직관적으로 되어있으므로 어렵지 않게 떠올릴 수 있을 것 입니다. 외부의 파일을 Unity Editor로 가져오는 것을 Import (임포트) 한다고 합니다.

 

우리는 Unity Editor에서 사용 할 자료들을 프로젝트 창에서 본다고 했었죠? 그리고 프로젝트 창은 파일 탐색기와 같다고 했구요. 그렇다면 사용하고 싶은 파일을 프로젝트 창으로 드래그 하면 어떻게 될까요? 네! 그것이 바로 Import 입니다.

 

훌륭한 게임 프로그래머는 프로젝트창에 씬이 Scenes 폴더에 분류 되어 있듯이 Import 하거나 생성한 모든 에셋들을 폴더로 분류합니다. 하지만 아직은 그럴 필요는 없어 보이네요. Assets 폴더 바로 아래로 Import 합니다.

 

 

 

 

 

 

 

 

그럼 이제 이 파일을 옮기면 바로 머티리얼이 적용이 되나요? 정답은 아닙니다. 해당 파일을 클릭해보면 인스펙터 창에는 다음과 같이 나타나는 것을 확인할 수 있습니다.

 

 

 

 

 

 

너무 많은 내용이 적혀있어 어지럽지만 간단하게 설명드리면 이 파일은 '텍스쳐', 즉 단순한 이미지 파일입니다. 이미지 파일은 타일로도 쓸 수 있고, UI로도 쓸 수 있고, 우리가 원하는 머티리얼로 만들 수 있는 것이죠.

 

우리는 이것을 머티리얼 컴포넌트에 적용하기 위해 머티리얼로 만들 필요가 있습니다.

 

 

 

머티리얼은 여러 게임 오브젝트에 적용을 할 수 있는 '에셋'입니다. 게임 오브젝트와 헷갈리지 않도록 합니다. 그러므로 우리는 프로젝트 창의 Assets 폴더 하위에 우클릭을 하여 머티리얼을 생성 할 수 있습니다.

 

Assets 하위에서 우클릭 -> Create -> Material로 머티리얼을 생성해줍니다.

 

 

 

 

머티리얼 이름을 BrickMaterial로 바꿔줍니다.

 

 

 

 

머티리얼은 다음과 같은 속성 (프로퍼티) 들을 가지고 있습니다.

 

 

 

 

 

흠... 너무 많네요! 하지만 영어를 좀 하신다면 이 내용들도 직관적으로 적혀있으니 만지작 거리시다 보면 금방 이해하시고 다루실 수 있을 것 입니다. Metallic 은 금속 제질처럼 매끈하게 만드는 정도이고 Smoothness는 부드러운 정도 같아보이죠.

 

하지만 이 Albedo 라는 것이 무엇일까요? 이 알베도는 흰 정도, 또는 반사율을 나타낸다고 하는데요. 이 기능은 말 하는 것보단 사용해보는게 더 이해하기 빠를 것 입니다. 그냥 반사율 이라는 정의만 알고 넘어가자구요.

 

우선 이 알베도를 빨간색으로 변경해봅시다.

 

 

 

 

그러면 머티리얼 에셋 역시 색이 변경된 것을 확인할 수 있습니다.

 

 

 

이 에셋을 아무 벽 하나에 드래그 해 봅시다.

 

 

 

 

와! 벽의 색이 저희가 설정해놓았던 Albedo의 색으로 변경되었습니다.

 

그렇다면 Albedo는 색을 변경하기 위한 것 인가요? 그럼 벽돌은요?

 

자자. Albedo를 다시 흰색으로 돌려놓고, Albedo 왼쪽의 박스에 우리가 Import 해놓아던 벽돌을 드래그 해 봅시다.

 

 

흰색으로 바꾸는거 잊지 않기!

 

 

와! 머티리얼이 벽돌패턴이 되었어요! 그리고 눈치가 빠르신 분들이라면 벽 역시 벽돌 패턴으로 바뀐 것을 확인하실 수 있습니다.

 

 

 

 

 

 

제 생각엔 벽돌이 너무 큰 것 같아요! 걱정 마세요! 우리의 친절한 머티리얼은 이런 부분까지 조절 할 수 있습니다. 머티리얼의 속성을 둘러보시면 Tiling이라는 부분이 보이실 것 입니다. X와 Y의 값이 각각 1, 1 이네요. 이는 하나의 게임 오브젝트를 머티리얼 타일 1개로 채우겠다는 뜻 입니다.

 

말이 어렵네요. 한번 X, Y를 2, 2로 변경해볼까요?

 

 

 

 

 

 

X와 Y 값을 각각 2, 2로 두니 가로 방향으로 벽돌 타일 2개, 세로 방향으로 벽돌 타일 2개를 사용해서 채운 느낌이 되었네요! 이런 식으로 이해하시면 될 것 같 습니다.

 

 

흠... 머티리얼 재밌네요. 그런데 강철처럼 보이기만 하고, 강철처럼 물리작용을 안하네요? 명색이 재료라는 친구인데...

 

 

Unity는 그런 것 까지 구현 할 수 있습니다! 바로 물리 머티리얼이죠.

 

물리 머티리얼을 사용하면 오브젝트에 탄력을 부여하고 마찰 및 항력 프로퍼티를 변경할 수 있습니다.

 

물리 머티리얼의 진가는 오브젝트가 중력의 영향을 받을 때 효과가 나타납니다. 물리 머티리얼은 게임 오브젝트 메시의 비주얼 프로퍼티를 변경하지 않습니다. (시각적  효과가 변경되지 않는 다는 뜻 입니다.)

 

 

머티리얼의 수가 늘었네요. Assets의 우클릭 -> Create -> Folder 로 폴더를 생성해주고 Materials로 이름을 변경해줍니다.

 

 

 

 

 

 

기존에 만들어놓았던 벽돌 머티리얼을 Materials 폴더에 옮깁니다.

 

 

 

 

 

 

 

Materials 폴더 하위에 우클릭 -> Create -> Pysics Material을  클릭합니다. 기존의 Material 보다 하단에 있으니 찾는데  헷갈리지 않도록 합니다.

 

 

 

 

 

 

 

 

 

 

새로운 에셋이 생겼으면 프로퍼티를 살펴봐야죠. 가볍게만 살펴봅시다.

 

 

 

 

 

Dynamic Friction은 동적인 물리 충돌량, Static Friction은 정적인 물리 충격량... 대충 그런 것 같네요. Bounciness는 뭔가 충돌하면 튕기는 정도를 나타내는 것 같죠? 이 Bounciness를 1로 변경해봅시다.

 

 

 

자자 빠르게 넘어가봅시다. 기존에 있는 Sphere로 가봅시다. 우리가 추가한 Rigidbody 말고 Sphere Collider 라는 컴포넌트가 있을 것 입니다.

 

 

 

 

 

 

 

Collider는 직역하면 충돌자 라고 하면 될까요. 게임 엔진에서 충돌하는 범위를 나타내기 위한 보이지 않는 영역을 Collider라고 합니다. 우리가 사용하는 Sphere는 구체이므로 구체모양의 충돌자인 Collider가 필요한 것이구요.

 

게임에서의 히트박스를 생각하면 되겠습니다. 그러나 게임의 최적화, 또는 밸런싱을 위해 히트박스가 보이는 것과는 다르게 형성 되어있을 수 있습니다. 저희는 게임을 만드는 입장에서 이런것을 직접 만들 수 있는 것이지요.

 

아무튼 Collider에 딱 봐도 머티리얼을 넣기 좋아보이는 Material 속성이 있습니다. 여기에다가 물리 머티리얼을 넣어보죠.

 

 

 

 

좋습니다. 좋습니다. 한번 게임을 플레이 해볼까요?

 

 

 

 

이전에는 접착제를 붙여놓은것처럼 착 하고 달라붙었는데, 이제는 현실적으로 통통 튀어오르는 것을 볼 수 있습니다! 

 

 

 


 

 

 

깔끔하게 정리를 하니 저도 공부가 되는 느낌입니다. 이러다가 Unity 강사를 해도 될 것 같아요. 좋습니다. 쭉쭉 가보자구요!