[Unity / C#] 맵세팅

주예성·2025년 7월 9일

📋 목차

  1. 맵설치
  2. Physics Material
  3. 벽과 바닥, 계단
  4. 오브젝트 렌더링
  5. 오늘의 배운 점
  6. 다음 계획. 다음 계획

🧱 맵설치

1인 개발로 3D 모델링까지 하기에는 부담이 컸습니다. 그러니 Unity에서 제공하는 무료 에셋을 이용해봅시다. 이곳에서 다운받아 임포트 해주세요.

1. 지형 설치

아직 장황하게 맵을 설치할 필요는 없습니다. 해당 에셋을 다운받았나요? 그러면 빈 오브젝트를 설치하여 Mesh Renderer, Mesh Filter, Mesh Collider, DefaultGroundMaterial을 추가하여 기본 바닥을 생성합시다. 3DGameKit->Art->Models->Terrains에서 입맛대로 골라주세요.
어느정도의 장애물은 필요하니 Models->Environment->Rock에서 돌을 몇개 설치합시다.

2. NavMeshSurface

해당 Ground가 있는 오브젝트를 Ground라는 빈오브젝트의 자식들로 둡니다. 그리고 Ground에 NaveMeshSurface 컴포넌트를 추가한뒤 CollectObjects를 Children으로 하고 Bake합니다.

3. 테스트


🥎 Physics Material

맵과 플레이어가 충돌하면 빗겨가지 않고 그자리에서 버티는 경우가 있습니다. 예를 들면 점프하는 도중 벽에 충돌할때, W키를 누르면 공중에서 버티는 것이 있죠.
그것을 해결하기 위해 Physics Material을 Project창에서 생성합시다.
그리고 플레이어, 바닥, 벽에 적용할 해당 Physics Material의 값을 알맞게 설정해주세요.

1. Dynamic Friction (동적 마찰력)

  • 움직이는 물체 간의 마찰력
  • 값이 클수록 미끄러짐이 적음

2. Static Friction (정적 마찰력)

  • 정지한 물체가 움직이기 시작할 때의 저항력
  • 값이 클 수록 움직이기 어려움
  • 보통 Dynamic Friction보다 높게 설정

3. Bounciness (탄성력)

  • 물체가 튀어오르는 정도

4. Friction Combine (마찰력 결합 방식)

  • 두 물체의 마찰력을 어떻게 계산할지
    - Average: 평균값 사용
    • Minimum: 더 낮은 값 사용
    • Maximum: 더 높은 값 사용
    • Multiply: 곱셈 사용

5. Bounce Combine (탄성력 결합 방식)

  • 두 물체의 탄성력 계산 방식
  • 설정은 위와 동일

🪨 벽과 바닥, 계단

플레이어가 자연스럽게 이동하도록 환경에서 모양대로 Collider를 생성해 Material에 WallPhysicsMat를 넣습니다. 계단에서는 미끄러지지 않게 하기 위해 마찰력이 높은 GroundPhysicsMat를 넣어주세요.

테스트


📦️ 오브젝트 렌더링

간혹가다 벽에 너무 가까이에 있으면 렌더링되지 않아 해당 오브젝트를 뚫고 바깥이 보이게 됩니다. 그때는 Player에 있는 Main Camera의 Inspector에서 Clipping Planes -> Near값을 0.1 또는 0.01 정도로 줄입시다.
그러면 정상적으로 렌더링 될겁니다!!


📚 오늘의 배운 점

  • Physics Material
  • Collider로 벽과 계단 판정 나누기

🎯 다음 계획

다음 글에서는:

  1. EnemyData 여러개 생성
  2. 구역에 따른 적 랜덤 스폰
profile
Unreal Engine & Unity 게임 개발자

0개의 댓글