본문 바로가기
Development/C#

멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 87일차

by Mobics 2025. 4. 2.

 

목차


    게임에 필요한 상식

    25.04.02

    새 프로젝트 생성

    • Editor Version : 2022.3.60f1
    • Template : 3D (Built-In Render Pipeline)
    • Unity Cloud 연결 해제
    • Project Name : 3d-game-project

     

    Knoll

    >> Knoll에 사용될 Material을 생성하고 적용

    : Knoll Body

     

    >> 그 외 Material의 세부 설정

    --> 원래는 Metallic과 Smoothness에 같이 적용되지만, Knoll이 URP 용으로 만들어진 소스라 Smoothness는 남아있음

     

    >> Knoll Parts와 Tree도 생성하여 적용

    1. Knoll Parts

    : Equip과 Metal 둘다 KnollParts Material 적용

    --> 강사님은 따로 'KnollMetal'이라는 이름으로 Material을 만들어서 KnollMetal을 'Gnoll Metal'에 적용하심

    --> Knoll의 PosY를 0.7로 설정하면 Tree 위에 올라간다

     

    2. Tree

     

    Environment Lighting (환경광) 설정

    --> 나온 Lighting 창을 Inspector 옆에 붙임

     

    ※ Light가 적용되지 않던 문제 해결

    : 이렇게 설정하면 Scene 상에서도 아예 까맣게 돼야하는데 빛이 남아있었고 기본적으로 Plane도 흰색으로 설정했지만 푸르스름하게 보였다.

    --> 아래 사진과 같이 전구 모양을 클릭하여 On 시켜주니 해결

     

    >> Point Light 생성

    --> 내 임의로 Position과 Color 조정

     

    Animation

    : Animator Controller 만들고 바인딩 --> 이름은 'KnollAnimatorController'

     

    >> 'KnollAnimatorController'를 열어서 Animation 넣기

    : 먼저 Animation에 Loop 적용

    --> breath와 walk 둘다 적용

     

    Baked Lighting

    : Baking하기 위해 Lighting Settings 생성 --> 따로 Settings 폴더를 만든 뒤, 폴더를 선택한 다음 생성

    --> 기본적으로 Baking 하는데 시간이 오래 걸리기 때문에 왼쪽과 같이 설정하여 간단하게 테스트

    --> 오른쪽은 Baked Data 삭제하는 방법

     

    >> Directional Light 조정

     

    └ Static한 Object에 대한 Baking

    >> 박스 만들기

    : Cube를 활용하여 만들고, 빈 게임 오브젝트로 'Cubes'를 만들어 묶은 다음 Cubes를 Static으로 바꿔서 자식들 모두 Static으로 변경 --> 이후 Baking

     

    1. Cube들 수치

    --> 수업 때 맞춘 수치를 다 날려서 다시 임의로 만듦

     

    2. Static 변경

     

    ※ Baking이 오래 걸리니 추가로 Resolution 조정

     

    >> Material을 통해 색이 다른 두 Sphere를 만들고 Baking

    --> RedSphere는 PosX가 2

     

    >> 큰 Sphere 하나를 만들고 Spot Light를 활용

    --> Sphere는 수업 때 맞춘 수치를 다 날려서 다시 임의로 만듦

    --> 이후 Baking

     

    >> Area Light

    : Area Light는 Bake Only이다.

    --> 색상은 임의로 설정, 이후 Baking

     

    >> Area Light로 꾸미기

    : Left Area Light는 PosX가 5, RotationY가 -90, Color가 (0, 0, 255, 255)

    --> Indirect Multiplier를 늘리면 주변광이 더 늘어난다

     

    >> Sphere가 빛을 반사하도록

    : Sphere의 Material을 조정 --> Metallic, Smoothness

     

    >> Reflection Probe

    : 주변 환경을 반사하는 반사 이미지를 저장해둔다. --> 주변 환경을 미리 렌더링하여 이미지로 저장해두고, 동적 오브젝트가 리플렉션 프로브의 영역에 들어오면 반사 이미지를 스카이박스 대신 리플렉션 프로브의 이미지로 대체한다.

    https://docs.unity3d.com/kr/2019.4/Manual/class-ReflectionProbe.html

     

    반사 프로브 - Unity 매뉴얼

    Reflection Probe 는 주변의 스피리컬 뷰를 모든 방향에서 캡처하는 카메라와 유사합니다. 캡처된 이미지는 반사 머티리얼이 있는 오브젝트에서 사용할 수 있는 Cubemap으로 저장됩니다. 특정 씬에는

    docs.unity3d.com

     

    >> 생성 후 세팅

    --> 왼쪽 사진은 Reflection Probe 자체의 위치, 오른쪽 사진은 Reflection Probe가 반사 이미지를 대체할 Object의 위치

     

    >> Baking 결과물

     

    └ 움직이는 Object에 대한 Baking

    >> Directional Light 설정

     

    ※ 놓친 Lighting 설정

     

    >> Sphere, Reflection Probe를 삭제하고 Capsule 생성

    --> 수업 때 맞춘 수치를 다 날려서 다시 임의로 만듦

     

    >> Light Probe Group 생성

    : 라이트 프로브는 라이트맵처럼 빛을 저장해 두었다가 런타임상에서 동적 오브젝트에 반영해줄 수 있는 기능

    --> 라이트 프로브는 라이팅 지나가는 빈 공간의 지점을 저장해두었다가 그 공간에 들어온 동적 오브젝트에 라이팅을 반영합니다. 주변의 라이팅 결과를 미리 인코딩하여 저장해놓으며, 런타임상에서 디코딩하여 사용합니다. 미리 연산된 정보를 사용하기 때문에 실시간 라이팅보다는 훨씬 저렴한 비용으로 라이팅을 보강해줄 수 있습니다.

     

    >> 아래 사진을 보면 Capsule의 그림자가 기존 그림자와 부자연스럽게 겹쳐있기에 이를 해결하기 위함

     

    >> Light Probe Group Editing

    : Gizmo를 눌러서 평면으로 앞, 옆을 보면서 하면 편함

    --> 정면과 측면 수정

    --> 2칸을 더 만들어서 3칸이 됐으면 다시 한번 3~5번을 반복하여 한 줄을 꽉 채우기

     

    ※ 예시 사진

    : 복습하며 다시 만든거라 차이가 있음

     

    >> 완성된 모습

     

    >> Lighting 설정 변경

     

    >> 최종 결과

    : 그림자가 자연스럽게 섞여있다.

     

    ※ Baking 결과물이 너무 쨍한 것 수정

    : Left도 동일하게 수정

    --> 이후 다시 Baking

     

    ※ Model 내에서 자체적으로 Scale 수정 가능

     

    좌표계

    >> 교안

    - 게임에 필요한 수학 상식

    https://spice-theory-152.notion.site/1c4d3cfdca3480f0b2cef91667339361?pvs=73

     

    게임에 필요한 수학 상식 | Notion

    좌표계

    spice-theory-152.notion.site

     

    - 게임에 필요한 물리 엔진

    https://spice-theory-152.notion.site/1c3d3cfdca348009bef4e5c65d090cbd

     

    게임에 필요한 물리 엔진 | Notion

    물리 엔진이 필요한 이유

    spice-theory-152.notion.site

     

    >> 좌표계 실습을 위한 사전 작업

    1. Capsule을 생성

    : Material도 만들어 적용한 다음 임의로 색상 변경, PosY를 1로 변경

     

    2. Capsule의 자식으로 Cube 생성 후 위치 조정

     

    3. 빈 게임 오브젝트로 'Player'를 만들고 Capsule을 그 자식으로 이동

    : 이후 Player를 Prefab화하고 Position 변경

     

    4. Player를 복사하여 'Enemy' 생성

    : Player와 Enemy의 구분을 위해 'Capsule' Material을 복붙하여 각각 'CapsulePlayer', 'CapsuleEnemy'로 만들고 색상을 임의로 변경, Position 변경

     

    5. Plane을 만들고 기존에 있던 'Plane' Material 적용 후, Material 조정

    : 색상은 임의로 설정 (39, 39, 39, 255)

     

    └ 좌표계 종류

    • 스크린 좌표계
    • 뷰포트 좌표계
    • 데카르트 좌표계
    • 극 좌표계
    • 구면 좌표계

     

    >> Exam01.cs 생성

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Exam01 : MonoBehaviour
    {
        private void Start()
        {
            Vector3 a = new Vector3(3, 0, 4);
            Vector3 b = new Vector3(-2, 0, 2);
    
            Vector3 c = a + b;
        }
    }