본문 바로가기

유니티 ML Agents/유니티 기초

(8)
8. 유니티 화면에 텍스트 표현하기 ○ 텍스트 객체 생성 텍스트 객체 생성 점수와 시간을 화면에 표시하기 위해서는 유니티에서 제공하는 UI(User Interface)를 사용해야 한다. UI에서 Text 객체를 사용하면 스크립트에서 점수와 시간을 구해 쉽게 화면에 표시할 수 있다. Text 객체를 생성하기 위해 계층 뷰에서 마우스 오른쪽 버튼을 클릭해 UI 항목에서 Text를 선택하자. Text 객체는 Canvas 객체의 하위 객체로 생성되며 아래에 EventSystem 객체가 함께 생성된다. Canvas와 EventSystem 객체에 대한 설명은 이 책에서는 생략하겠다. 이제 Text 객체의 이름은 Score라 변경한 다음 인스펙터 뷰에서 톱니바퀴 버튼을 클릭해 Reset 메뉴를 통해 텍스트 객체 위치를 초기화 하자. Game 뷰에서 확..
7. 유니티 물리 충돌 처리 ○ 물리 충돌 처리 개념 물리 충돌 처리 객체 종류 콜라이더(Collider) 컴포넌트는 오브젝트의 물리 충돌을 처리하는 역할을 한다. 물리 충돌 처리 관점에서 게임 오브젝트는 4가지 종류로 나눌 수 있다. 정적 콜라이더(Static Collider)는 콜라이더가 있지만 리지드바디가 없는 게임 오브젝트이다. 정적 콜라이더는 움직이지 않는 벽, 바닥과 같은 오브젝트에 사용되며 물리 엔진은 정적 콜라이더가 움직이지 않는다고 가정하고 있다. 만일 정적 콜라이더가 이동하게 되면 물리 엔진 내부에서 지속적으로 연산이 이루어져야 하기 때문에 게임 성능 저하를 초래할 수 있다. 리지드바디 콜라이더(Rigidbody Collider)는 콜라이더와 리지드바디 컴포넌트가 함께 있는 게임 오브젝트이다. 물리 엔진에 의해 완..
6. 유니티 객체 회전 및 프리펩 사용 ○ 벽과 타겟 객체 만들기 벽(Cube) 객체 만들기 가장 자리에 공이 빠져 나가지 못하도록 벽을 세워 보자. 벽은 직사각형 객체 4개로 이루어 진다. 벽을 이루는 직사각형 객체는 모두 비슷한 특성을 가지고 있기 때문에 빈 객체(Empty Object)를 생성해서 하나로 묶어주는 것이 관리하기 편리하다. 빈 객체는 transform 컴포넌트로만 이루어진 객체인데 독립적으로 씬에 존재할 수 없는 스크립트나 객체를 모아 놓거나 동일 객체를 하나로 묶어 놓는 부로 객체로 주로 사용된다. Create Object > Create Empty 메뉴를 사용해서 빈 객체를 만들 후 이름을 Wall로 변경하자. 벽 4개 만들기 앞에서 만든 큐브 객체 이름을 East Wall로 변경하고 Transform 컴포넌트의 속성을..
5. 유니티 카메라 제어 ○ 카메라 위치 변경 카메라 위치 제어 게임을 실행했을 때 화면이 너무 옆으로 누워 있다는 것을 느낄 수 있었을 것이다. 그리고 일반적인 게임에서는 플레이어가 움직임에 따라 카메라가 플레이어를 따라 가지만 이 게임에서는 카메라가 고정되어 있다. 먼저 카메라 위치를 보기 좋게 바꾼 다음에 카메라가 공의 움직임을 따라 가도록 변경해 보자. 카메라 위치를 변경하는 방법은 두 가지인데 먼저 씬 뷰에서 카메라를 선택하고 움직이면서 위치를 설정할 수 있다. 두 번째로 카메라 객체 인스펙터 뷰에서 Transform 컴포넌트의 Position 속성을 변경하면서 카메라 위치를 바꿀 수 있다. 카메라 객체를 선택하면 씬 뷰 우측 하단에 게임 뷰 미니 화면이 나오는데 그 화면을 참고해서 카메라를 적절하게 조절해 보자. ○ ..
4. 유니티 스크립트 ○ 유니티 스크립트 기본 개념 스크립트 기본 개념 유니티는 자바스크립트와 C# 기반 스크립트를 지원하고 있다. 현재 대부분의 자료들이 C#을 사용하고 있기 대문에 이 책에서도 C# 기준으로 설명하도록 하겠다. C#은 마이크로소프트에서 개발한 객체지향 언어로써 JAVA와 비주얼C++과 유사한 문법을 가지고 있다. C# 문법을 별도로 공부하지 않더라도 어느 정도 객체지향 프로그래밍에 대한 경험이 있는 사람이라면 어렵지 않게 코드를 이해할 수 있다. 객체지향 프로그래밍 경험이 없는 사람이면 C# 기본 문법에 대해 먼저 공부하는 것이 좋다. 유 니티는 게임 오브젝트 중심으로 개발되며 게임 오브젝트의 구체적인 기능을 정의하는 것이 스크립트이다. 유니티 스크립트는 이벤트 기반으로 동작한다. 객체가 움직이거나 프레임..
3. 유니티 Roll A Ball 기본 객체 만들기 ○ 플레인(Plane) 만들기 플레인(Plane) 만들기 먼저 편평한 바닥 모양을 한 플레인 객체를 추가해 보자. 플레인 객체는 모양에서 알 수 있듯이 게임에서 바닥의 역할을 한다. 플레인을 만들어 놓고 바닥으로 활용해서 공이 튀기거나 자동차가 움직이는 기반이 되는 바닥으로 사용한다. 객체를 추가할 때는 보통 계층 뷰에서 시작한다. 계층 뷰에서 마우스 오른쪽 버튼을 클릭해서 3D Object를 선택하고 그 중에서 Plane을 클릭한다. 3D 객체는 3차원 이기 때문에 x, y, z로 좌표가 결정되지만 플레인은 편평하기 때문에 y 좌표가 존재하지 않고 x,z 만 가지고 표현한다. 플레인은 또한 10단위 길이로 표현 된다. 플레인 이름 바꾸기 플레인 객채의 이름을 바꿔보자. 유니티에서 일반적으로 계층 뷰나 ..
2. 유니티 기본 예제 Roll A Ball 개요 ○ Roll A Ball 이란 Roll A Ball 실행 화면 Roll A Boll 게임은 유니티에서 초보자에게 툴 사용법을 익힐 수 있도록 만든 단순한 3D 게임이다. 게이머는 바닥을 움직이며 공의 이동 방향을 조절해 공이 큐브에 부딪힐 수 있도록 해야 한다. 공이 큐브에 부딪히면 큐브는 사라지게 된다. 게임의 목적은 모든 큐브를 없애는 것이다. Roll A Ball은 만들기 간단하지만 유니티의 핵심 요소가 모두 들어있기 때문에 초보자를 위한 튜터리얼로 적합한 게임이다. 유니티 튜토리얼 화면 유니티 공식 홈페이지에서는 쉽고 다양한 튜토리얼을 제공한다. https://unity3d.com/kr/learn/tutorials/s/roll-ball-tutorial 사이트에 접속하면 Roll A Ball을 설명..
1. 유니티 설치 및 기본개념 ○ 유니티 다운로드 유니티는 https://unity3d.com/kr/get-unity/download 에서 쉽게 다운로드 받을 수 있다. Unity 선택 및 다운로드와 Unity 허브 다운로드가 있는데 Unity 허브란 다양한 버전의 Unity를 데스크탑에서 관리하기 쉽게 지원해주는 툴이다. 전문적인 유니티 개발자라면 유니티 허브를 사용하는 것이 좋겠지만 이 책에서는 유니티를 이용한 머신러닝에 관심이 있기 때문에 상대적으로 단순한 오프라인 설치 모델을 사용하기로 한다. 유니티 다운로드 다음 화면에서 Plus, Pro, Personal 버전 세 개 중 하나를 선택할 수 있는데 테스트를 위해 무료로 제공되는 Personal 버전을 선택한다. 그리고 Windows용 설치 프로그램 다운로드를 클릭하면 설치 파..