Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

동구의_C# & Unity_개발일지

2024.01.18 내일배움캠프 19일차 TIL_Unity (입문, 알고리즘) 본문

Unity

2024.01.18 내일배움캠프 19일차 TIL_Unity (입문, 알고리즘)

mongle_0l 2024. 1. 18. 14:00

새로운 주차인 유니티 입문 주차가 시작되었다.

역시 오늘도 새로운 조와 팀원들을 만나게 되었다.

그런데...

헉!!! 언젠간 나도 하겠지라고는 생각했는데 그게 오늘이 됐다 ㅎㅎ;

팀 이름은 사박궤(나루토에 나오는 용어) 라고 한다,, 나루토 좀 봐둘걸 ㅋㅋ..

간단하게 노션에 계획과 목표를 적으며 이야기를 나누고 개인 학습을 시작하였다.

 

사전 캠프에서 Unity을 잠깐 맛을 봤지만 이후 본 캠 첫 팀 프로젝트를 하는 과정 중 Unity 사용에 어려움이 있었던 경험이 있어 이번에 배우는 Unity 입문과정에서는 하나하나 완벽하게 짚고 넘어가며 학습, 숙달할 계획이다!


알고리즘 코드카타 6일차

짝수의 합

문제 설명
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 0; i <= n; i++ ){
            if(i % 2 == 0)
            answer += i;
        }
        return answer;
    }
}


Unity 및 2D 게임 개발 소개

Unity 설치 및 소개
Unity 살펴보기
개발 맛보기 "PONG"

 

 

01. Unity Hub

  • Unity Hub란?
  • Unity Hub는 Unity 엔진 개발자를 위한 프로젝트 관리 및 엔진 설치, 에디터 설정, 학습 자료 제공을 통합한 플랫폼입니다.

02. Unity 설치

  • 설치가 가능한 버전 중 2022.3.2f1 LTS 버전 Install
  • LTS : 오랜 기간 동안에 걸쳐 안정성과 보안 패치를 제공하는 정책 또는 버전

2022.3.2.f1 버전 설치

이전에 있던 버전은 삭제하고 이번에 주로 사용할 버전을 설치하였다.

 

03. Unity 소개

Unity는 게임 개발자들이 게임을 디자인, 개발, 배포하기 위한 강력한 도구와 기능을 제공하여 게임 개발 과정을 간소화하고 가속화하는 데 도움을 주는 인기 있는 게임 개발 엔진입니다.

 

3-1) 게임 엔진

  • 게임 개발을 위한 소프트웨어 플랫폼
  • 게임 개발자들이 게임을 디자인, 개발, 배포하기 위한 기능과 도구 제공
  • 그래픽, 물리, 사운드, 애니메이션, 인공지능 등 다양한 요소 관리 및 통합
  • 게임 개발 과정을 간소화하고 가속화

3-2) Unity

  • 게임 개발 및 시뮬레이션을 위한 통합 개발 환경(IDE)
  • 2D 및 3D 게임 개발을 지원
  • 다양한 플랫폼에서 실행 가능한 게임 개발
  • 사용자 친화적인 인터페이스와 강력한 기능 제공
  • 크로스 플랫폼 개발, 실시간 미리 보기, 2D/3D 그래픽 지원, 물리 시뮬레이션, 스크립팅 언어, 에셋 스토어, 커뮤니티 및 문서화 등 기능 제공

3-3) 비쥬얼 스튜디오

  • 마이크로소프트에서 개발한 통합 개발 환경(IDE)
  • 코드 편집기와 디버깅 도구, 빌드 시스템 등을 포함하여 개발에 필요한 다양한 기능 제공
  • 강력한 IntelliSense 기능으로 코드 작성 시 자동 완성, 신택스 하이라이팅, 오류 체크 등을 제공
  • 통합된 디버깅 환경으로 코드 실행 중에 문제를 분석하고 수정할 수 있음

04. 유니티 간단 요약

4-1) 유니티 의 주요 기능과 사용법 설명

  • 유니티는 게임 개발을 위한 통합 개발 환경입니다.
  • 주요 기능:
    • 프로젝트 관리: 새로운 프로젝트 생성, 프로젝트 파일 구성 및 관리
    • 씬(Scene) 관리: 게임의 각 장면과 화면을 구성하는 요소
    • 에셋(Asset) 관리: 게임에 필요한 리소스(이미지, 사운드, 모델 등)를 관리
    • 컴파일 및 빌드: 스크립트 코드를 컴파일하여 실행 가능한 게임으로 빌드
    • 디버깅: 코드 실행 중에 오류를 찾고 수정
    • 에디터 확장 기능: 유니티 에디터를 사용자의 요구에 맞게 확장할 수 있는 기능 제공

4-2) 에셋, 씬, 게임 오브젝트의 개념과 관계 설명

  • 에셋(Asset):
    • 게임에 필요한 모든 리소스(이미지, 사운드, 모델, 코드 등)를 의미
    • 프로젝트의 에셋 폴더에 저장되며, 유니티에서 사용 가능한 형식으로 가져와서 게임에 활용
  • 씬(Scene):
    • 게임의 각 장면 또는 화면을 의미
    • 유니티에서 게임은 하나 이상의 씬으로 구성되며, 각 씬은 게임의 특정 부분을 담당
    • 예를 들어, 메뉴 씬, 게임 플레이 씬, 엔딩 씬 등으로 구성
  • 게임 오브젝트(GameObject):
    • 씬에 배치되는 모든 요소를 의미
    • 게임 오브젝트는 에셋을 이용하여 씬에 생성되며, 게임의 동작과 상호작용을 담당
    • 예를 들어, 캐릭터, NPC, 아이템, 장애물 등이 게임 오브젝트
    • 게임 오브젝트는 계층 구조로 구성되어 부모-자식 관계를 가지며, 이를 통해 그룹화하고 조작

05. 유니티 인터페이스

5-1) 새 프로젝트 만들기

5-2) Unity 인터페이스

  • (D) Scene 뷰: 씬의 3D 또는 2D 뷰로 씬 구성 요소 편집
  • (C) Game 뷰: 게임이 실제로 실행되는 뷰로, 플레이어가 게임을 플레이하는 화면을 실시간으로 확인
  • (B) Hierarchy 뷰: 현재 씬의 게임 오브젝트 계층 구조 표시 및 편집
  • (F) Inspector 뷰: 선택된 게임 오브젝트의 속성 및 구성 요소 편집
  • (G) Project 뷰: 프로젝트의 에셋 표시 및 관리
  • Console 뷰: 게임 실행 중의 로그 및 메시지 표시

Unity Documentation - Unity 인터페이스

 

Unity 인터페이스 - Unity 매뉴얼

이 섹션에서는 가장 많이 사용되는 에디터 창과 각 창을 최대한 활용하는 방법에 대해 자세하게 설명합니다.

docs.unity3d.com

5-3) 마우스 조작 - Flythrough mode

  • 마우스 왼쪽 클릭 : 게임오브젝트 선택
  • 마우스 오른쪽 클릭 : w,s,a,d,q,e 키로 씬 뷰를 1인칭 이동가능, 드래그시 씬 뷰 회전
  • 마우스 스크롤 : 줌 인 & 아웃
  • 마우스 스크롤 클릭 : 씬 뷰 이동
  • alt + 마우스 왼쪽 드래그 : 씬 뷰 화면 중심 회전
  • alt + 마우스 오른쪽 드래그 : 줌 인 & 아웃

5-4) 툴바 - 게임 오브젝트 위치 지정

  • Hand Tool (손 도구, 단축키 : Q) : 씬 뷰를 이동시킴
  • Move Tool (이동 도구, 단축키 : W) : 게임오브젝트를 이동시킴
  • Rotate Tool (회전 도구, 단축키 : E) : 게임오브젝트를 회전시킴
  • Scale Tool (스케일 도구, 단축키 : R) : 게임오브젝트의 스케일을 조절함
  • Rect Tool (사각형 도구, 단축키 : T) : 게임오브젝트의 스케일을 사각형 방향으로 조절함
  • Transform Tool (좌표변형 도구, 단축키 : Y) : MoveTool, RotateTool, ScaleTool 을 동시에 사용함.

유니티의 기본 구성: 우리가 필요로 하는 것들을 래고방식으로 컴퍼넌트을 붙여 넣는다.

 

06. PONG 게임 개발

게임을 만드는 과정을 경험해봅시다.

 

6-1) 게임 소개

  • "Pong"은 전통적인 탁구 게임을 모티브로 한 간단한 2D 게임입니다.
  • 이 게임을 개발하면서 유니티의 기초적인 개념과 기능을 학습할 수 있습니다.

중요한 기능들을 정리해서 알아보자!

 

핵심 키워드

Box Collider 2D
Rigidbody 2D
Is Trigger

 

 

 

Square을 생성하면 정사각형의 이미지가 생성된다

오브젝트를 생성하면 버릇처럼 행동해야 될 행위 -> Transform에서 Reset 버튼을 눌러준다. (최초로 생성할 때 이상한 좌표로 생성이 될 수 있음)

이렇게 생성한 Square는 Ball(공), Player1, Player2, Goal1, Gola2, Wall(벽)등으로 만들어짐 (모든 경기장에 있는 공과 지형지물은 Square로 오브젝트 생성)

 

Ball (필요한 것)

1. Box Collider 2D (충돌체 (형태))

Add Component > Box Collider 2D

사진에 보이는 초록색 선들이 Ball에 적용된 Box Collider 2D가 적용된 충돌체이다.
다시 말해 Unity에서 Box Collider 2D는 2D 게임 오브젝트에 대한 충돌 영역을 정의하는 구성 요소 중 하나이다.
이 컴포넌트는 2D 공간에서 사각형 모양의 충돌 영역을 만들어, 다른 오브젝트와의 상호 작용 및 충돌 감지를 가능케 한다.

지금까지 Ball에 두 가지 일을 하게 하였다.

1. sprite Renderer으로 사각형 모양을 보여주었다.

2. 충돌을 해야 하니 Box Collider 2D을 달아주었다.

 

2. Rigidbody 2D (물리적 연산 처리)

Add Component > Box Collider 2D

물리를 처리하고 싶으면 Rigidbody 2D을 달아준다.

충돌을 하고 싶으면 무조건 Box Collider 2D와 sprite Renderer 두 가지을 가지고 있어야 한다.

Gravity Scale: 중력을 사용 1 > 0으로 바꿔 중력을 없앤다.

Constraints에서 

Freeze(얼다, 얼리다) : 물리적으로 날아가거나 할 때 충격을 받으면 회전이나 이동을 물리적인 처리로 하지 않게 할 것이냐!

x, y, z에서 z을 체크하면 회전을 하지 않는다.

 

스크립트를 Inspector에 드래그해서 넣어 적용시킬 수 있다.

 

Ball 스크립트 > 랜덤의 방향으로 날아간다!

 

모든 벽에 충돌을 적용시키기위해  Box Collider 2D을 달아준다.

 

Material

Sprite Renderer > Material

실제로 눈에 보여지는 재질(빤짝임, 색깔, 재질, 모양)

Rigidbody 2D > Material (Physics Material 2D)

실질적인, 물질적인 재질

 

Goal

Box Collider 2D > Is Trigger

Is Trigger 가 켜져 있으면 물리 충돌이 일어났을 때 물리 충돌을 할 거냐? 할 거냐? 

일반적인 충돌과는 달리, Is Trigger가 활성화되면 해당 Collider는 다른 Collider와의 실제 물리적인 충돌을 감지하지 않고, 오직 충돌이 발생했을 때 이를 감지할 수 있다. (실제 물리 충돌x, 충돌에 대한 인지는 하겠다!!)
즉, Is Trigger가 활성화된 Collider는 두 오브젝트가 겹쳤을 때 실제로 물리적인 충돌이 발생하는 것이 아니라, 서로의 경계가 교차할 때에만 OnTrigger 이벤트가 발생한다.

 

Goal 스크립트 > OnTriggerEnter2D (충돌처리를 인지하는 코드)

private void OnTriggerEnter2D(Collider2D collison)
{
    if(collision.name.Equals("Ball"))
    {
    }
}

 

Trigger가 켜져 있는 코드를 가지고 있다면 충돌이 일어났을 때 TriggerEnter, OnTriggerStay, OnTriggerExit 3가지 함수들을 자동으로 호출해 준다.

 

UI 만들기

UI > Text - TextMeshpro

Canvas > 애부터 설정을 해야 한다.

Reference 없이 픽셀 사이즈(정 사이즈)에 맞춰서 화면을 구성하게 만들어져있기 때문에 해상도가 달라지거나 다른 버전에 핸드폰이나 PC에 들어가다 보면은 해상도가 다 깨져 미리 만들어져 놓은 UI가 다 깨질 수 있음

> Canvas Scaler부터 설정 (Scale Woth Screen Size) X: 1920 Y: 1080

 

빈 오브젝트 > Create Empty > GameManager

GameManager는 게임의 전체 흐름을 담당

게임 결과물!!