동구의_C# & Unity_개발일지
2024.02.19 내일배움캠프 38일차 TIL_Unity (심화, 알고리즘) 본문
오늘은 입문, 숙련에 이어 마지막 주차인 심화 주차이다.
이번 심화 주차인 2주 과정이 끝나면 본격적인 최종 프로젝트가 8주간 시작된다!
또다시 새로운 팀과 함께 팀 노션을 만들며
심화과정에서의 3D 게임 내용을 더욱 깊게 배워볼 예정이다!
알고리즘 코드카타 23일차
없는 숫자 더하기
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public int solution(int[] c) {
int a = 0;
for(int i =0; i < 10; i++)
{
if(!c.Contains(i))
a += i;
}
return a;
}
}
3D 게임 개발 고급
RPG FSM 프로젝트 셋팅
유한 상태 머신 (FSM) 이란?
플레이어 상태머신 준비
플레이어 스테이트 머신 만들기
01. 프로젝트 생성
- 3D URP 프로젝트 생성
1-1) URP 란?
Unity의 Universal Render Pipeline의 약자로, 스크립트 가능한 렌더 파이프라인(Scriptable Render Pipeline)입니다.
다음과 같은 특징을 가지고 있습니다
- Cross-Platform Compatibility: URP는 Unity가 지원하는 모든 플랫폼에서 동작하도록 설계되었습니다. 이는 모바일, 데스크톱, 콘솔 게임 뿐만 아니라 AR, VR 어플리케이션에도 적합합니다.
- Performance and Scalability: URP는 성능 및 확장성을 목표로 설계되었습니다. 특히 저사양 장치에서도 뛰어난 성능을 제공하도록 최적화되어 있습니다. 또한, 그래픽 설정을 쉽게 조절할 수 있어 다양한 장치에 적합하게 스케일링 할 수 있습니다.
- Modern Rendering Features: URP는 현대적인 렌더링 기술을 제공합니다. 이에는 주요 라이트 유형, 표준 쉐이딩 모델, 환경 리플렉션 등이 포함됩니다.
- Customizability: URP는 사용자 정의 렌더링 파이프라인을 생성할 수 있도록 해주는 유연성을 제공합니다. 이를 통해 특정 게임 또는 프로젝트에 필요한 고유한 렌더링 기능을 추가할 수 있습니다.
- Graphics Quality: URP는 높은 품질의 그래픽을 제공합니다. 이는 향상된 라이트 모델, 표면 쉐이딩, 포스트 프로세싱 효과 등을 사용하여 획득됩니다.
- Simplicity: URP는 Unity의 기존 렌더링 시스템에 비해 사용하기 쉽습니다. 이는 그래픽 설정을 단순화하고, 초기 설정을 쉽게 하도록 도와주는 도구가 포함되어 있습니다.
02. 핵심 내용
2-1) 유한 상태 머신 (FSM)
- 유한 상태 기계(Finite State Machine, FSM)
- FSM의 개념
- FSM은 유한 상태 기계를 나타내는 디자인 패턴입니다.
- 상태와 상태 간의 전환을 기반으로 동작하는 동작 기반 시스템입니다.
- FSM의 구성 요소
- 상태 (State): 시스템이 취할 수 있는 다양한 상태를 나타냅니다.
- 전환 조건 (Transition Condition): 상태 간 전환을 결정하는 조건입니다.
- 동작 (Action): 상태에 따라 수행되는 동작 또는 로직을 나타냅니다.
- FSM의 동작 원리
- 초기 상태에서 시작하여 입력 또는 조건에 따라 상태 전환을 수행합니다.
- 상태 전환은 전환 조건을 충족할 때 발생하며, 전환 조건은 입력, 시간, 조건 등으로 결정됩니다.
- 상태 전환 시 이전 상태의 종료 동작과 새로운 상태의 진입 동작이 수행됩니다.
- FSM의 장점
- 상태를 명확하게 정의하고 상태 간 전환을 일관되게 관리할 수 있습니다.
- 복잡한 동작을 상태와 전환 조건으로 나누어 구현하므로 코드 유지 보수가 용이합니다.
- 다양한 동작을 유기적으로 조합하여 원하는 동작을 구현할 수 있습니다.
- FSM의 예시: 플레이어 상태 관리
- 상태: 정지 상태, 이동 상태, 점프 상태
- 전환 조건: 이동 입력, 점프 입력, 충돌 등의 조건
- 동작: 이동 애니메이션 재생, 점프 처리, 이동 속도 조정 등
03. 핵심 내용
3-1) 프로빌더(ProBuilder)
프로빌더(ProBuilder)는 Unity의 유용한 에셋 중 하나로, 게임 개발자들이 빠르고 쉽게 3D 모델을 만들고 편집하는 도구입니다. 기본적으로 Unity에서 제공하는 기능으로, 유료 라이선스가 필요 없이 무료로 사용할 수 있습니다.
프로빌더의 주요 기능과 특징은 다음과 같습니다
- 3D 모델링: 프로빌더는 내장된 도구들을 사용하여 3D 모델을 쉽게 생성할 수 있습니다. 기본적인 기하 도형(정육면체, 원기둥 등)을 생성하거나, 다른 모델링 도구를 사용하여 더 복잡한 모델을 만들 수 있습니다.
- 편집과 수정: 프로빌더는 객체를 선택하고 이동, 회전, 스케일 등을 수행하는 편집 도구를 포함하고 있습니다. 또한 정점, 엣지, 면 수준에서 세부적인 편집이 가능합니다.
- UV 매핑: 3D 모델의 텍스처 UV 매핑을 프로빌더에서 직접 할 수 있습니다. 이를 통해 텍스처를 정확하게 적용할 수 있습니다.
- 콜리전 설정: 프로빌더는 간단한 콜리전 메쉬를 만들 수 있으며, 이를 통해 게임 캐릭터나 객체와 상호작용하는데 사용될 수 있습니다.
- 성능 최적화: 프로빌더는 다른 모델링 도구와 함께 사용하여 메시의 폴리곤 개수를 최적화하고 게임 성능을 향상시킬 수 있습니다.
3-2) 캐릭터 컨트롤러(Character Controller)
캐릭터 컨트롤러(Character Controller)는 Unity에서 캐릭터나 플레이어의 움직임과 충돌을 관리하기 위해 사용되는 컴포넌트입니다. 이 컴포넌트는 물리 엔진이 아닌 캐릭터의 움직임을 프레임 기반으로 처리하므로, 주로 3D 캐릭터를 제어하는 데 사용됩니다.
캐릭터 컨트롤러의 주요 기능과 특징은 다음과 같습니다
- 캐릭터 이동: 캐릭터 컨트롤러는 단순한 이동을 쉽게 구현할 수 있도록 메서드를 제공합니다. 주로 이동 방향과 이동 속력을 설정하여 캐릭터를 움직이게 합니다.
- 중력 적용: 캐릭터 컨트롤러는 중력을 적용하여 점프나 떨어짐을 자연스럽게 처리할 수 있습니다.
- 충돌 처리: 캐릭터 컨트롤러는 물리 엔진을 사용하지 않고, 캐릭터의 충돌을 감지하고 처리할 수 있습니다. 다른 콜리더와의 충돌을 통제하고, 경사로와의 상호작용 등을 지원합니다.
- 바닥 검출: 캐릭터 컨트롤러는 캐릭터가 바닥 위에 놓이도록 바닥 검출을 처리합니다. 바닥과의 거리, 표면 노멀 등을 고려하여 캐릭터의 높이를 조절하거나 점프를 가능하게 합니다.
- 움직임 제한: 캐릭터 컨트롤러는 움직임을 제한하는 기능도 제공합니다. 지정된 영역 내에서만 움직이도록 하거나, 지형의 경사를 따라 이동할 수 있도록 설정할 수 있습니다.
강의 따라하기
기본적인 지형지물과 플레이어을 만들어보았다.
'Unity' 카테고리의 다른 글
2024.02.21 내일배움캠프 40일차 TIL_Unity (심화, 알고리즘) (0) | 2024.02.21 |
---|---|
2024.02.20 내일배움캠프 39일차 TIL_Unity (심화, 알고리즘) (0) | 2024.02.20 |
2024.02.16 내일배움캠프 37일차 TIL_Unity (숙련, 알고리즘) (0) | 2024.02.16 |
2024.02.15 내일배움캠프 36일차 TIL_Unity (숙련, 알고리즘) (0) | 2024.02.15 |
2024.02.14 내일배움캠프 35일차 TIL_Unity (숙련, 알고리즘) (0) | 2024.02.14 |