본문 바로가기

유니티 ML Agents

(26)
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용 설치 프로그램 다운로드를 클릭하면 설치 파..
유니티 용어 설명 ○ 렌더링(Rendering) - 3D 그래픽 프로그램이 가상의 3차원 공간에 위치한 물체를 화면으로 그려내는 작업 ○ 매쉬(Mesh) - 3D 컴퓨터 그래픽에서 객체의 외관을 구성하기 위한 점, 선, 면의 집합 ○ 메쉬 필터(Mesh Filter) - 에셋으로부터 메쉬 정보를 가져 옮 ○ 메쉬 렌더러(Mesh Render) - 메쉬 정보를 가지고 화면에 표현 ○ 메쉬 콜라이더(Mesh Collider) - 메쉬에 의거한 콜라이더 생성 ○ 콜라이더(Collider) - 오브젝트의 물리 충돌 감지를 위한 형태를 정의한다. 콜라이더는 렌더링했을 때는 눈에 보이지 않는다. ○ 파티클(Particles) 시스템 - 파티클은 유동적인 객체를 표현하기 위한 작은 이미지를 말한다. - 고정된 외형을 갖춘 객체를 나타..
유니티(Unity) 충돌 처리 Trigger 와 Collision 유니티에서 충돌 처리하는 방식은 크게 두가지가 있다. 하나는 Trigger를 사용하는 것이다. 객체의 콜라이더(Collider) 컴포넌트에 있는 Trigger 속성이 활성화되어 있으면 물체가 충돌할 때 OnTriggerEnter 함수가 호출된다. 충돌이 계속되는 시점에는 OnTriggerStay 함수가 반복적으로 호출되며 충돌이 끝나면 OnTriggerExit 함수가 호출된다. 다른 하나는 Collision을 사용하는 것이다. 객체의 Collision 컴포넌트에 Trigger 속성이 비활성화되어 있을 경우 두 객체가 충돌하면 OnCollisionEnter 함수가 호출된다. 충돌이 계속되는 시점에는 OnCollisionStay 함수가 호출되며 충돌이 끝나면 OnCollisionExit함수가 호출된다.Tri..
콜라이더(Collider) 콜라이더 컴포넌트는 오브젝트 물리 충돌을 처리하는 역할을 한다. 콜라이더는 씬 뷰에서 초록색 선으로 표현된다. 만일 콜라이더의 크기가 객체의 크기 보다 크게 만들어 진다면 콜라이더는 객체 밖으로 나오게 된다. 만일 객체의 크기 보다 작다면 객체 안으로 콜라이더는 들어간다. 콜라이더는 객체의 모양과 동일하게 설정하는게 가장 좋다. # 정적 콜라이더(Static Collider) 정적 콜라이더는 콜라이더가 있지만 리지드바디가 없는 게임 오브젝트이다. 정적 콜라이더는 움직이지 않는 벽, 바닥과 같은 오브젝트에 사용된다. 물리 엔진은 정적 콜라이더가 움직이지 않는다고 가정하고 있다. 만일 정적 콜라이더가 이동하게 되면 물리 엔진 내부에서 지속적으로 연산이 이루어져야 하기 때문에 게임 성능 저하를 초래할 수 있다..