간만에 포스팅. 간만에 새로운 무언가를 할 기회가 있기 때문이다.
바로 Unity 가 그것! 회사에서 내년에 Unity로 무언가 프로젝트를 할 거란다. 평소 관심있던거라 잽싸게 교육신청했다.
유니티 러닝 센터(SVVR)에서 진행하는 ‘Unity2017을 활용한 2D/3D 게임 개발(초급)’ 강의를 들으며 공부한 내용을 정리하고자 한다.
교육 첫째날, 강사 본인의 짧은 소개와 함께 강의가 시작되었다. 재민 강사님 이었던가..기억이…(죄송;;)
툴의 기본적인 사용법 익힘을 위하여 바로 실습이 진행되었다.
낙하하는 Cube를 구현해보았다.
‘Hierarchy’ 메뉴에서 ‘Create’ – ‘3D Object’ – ‘Cube’를 선택하여 Scene에 ‘3D Cube’를 추가하였다.
(헐, 이게 다야? C# WPF로 구현하려면…..ㅎㄷㄷ) 4번의 클릭으로 3D Cube를 생성하다니! Awesome!
(여담이지만 Unity에서 unit 이란 단위가 앞에서 생성한 3D Cube의 한변의 길이라고 한다.)
3D Cube가 땅에 떨어지려면? 3D Cube가 있으니, 이제 땅을 만들자!
‘Hierarchy’ 메뉴에서 ‘Create’ – ‘3D Object’ – ‘Plane’를 선택하여 Scene에 ‘Plane’를 추가한다.
3D Cube가 반쯤 바닥에 파묻힌 상태가 될것이다.
(Object를 추가했을때 항상 ‘Inspector’메뉴에서 Transform이 초기값인지 확인하자.)
이제 3D Cube의 Y 값을 조절하여 바닥에서 떨어트리자. ‘Scene’화면에서 Cube를 선택하면 연두색(Y), 빨간색(X), 파란색(Z) 축의 값을 설정할 수있는 화살표가 생긴다. 연두색(Y)화살표를 클릭하고 위로 쭉~땡기면 바닥에서 점점 멀어진다. 당연히 아래로 쭉~땡기면 점점 가라 앉는다. ‘Inspector’ – ‘Transform’메뉴에서 Position Y 값이 변경되는것을 확인할 수 있다. Y 값을 5정도로 설정하자.
이제 화면 중앙에 있는 Play 버튼 (▶)을 클릭하면… 아무 변화가 없을것이다. (ㅋㅋㅋ왜했니)
이 Cube에 생명력(?)을 주려면 Rigidbody 컴포넌트를 추가한다.
‘Inspector’ 메뉴 맨 밑에 있는 Add Component 버튼을 클릭하고 ‘Physics’ – ‘Rigidbody’ 를 클릭한다.
이제 다시 화면 중앙에 있는 Play 버튼 (▶)을 클릭하면… 짜잔!
Cube가 중력가속도를 받으며 떨어지다가 바닥에 정지하게 된다. 클릭 몇번으로 구현한 것이다. 정말 놀랍다…
간단한 실습은 여기까지…
하지만 이 실습으로 Unity 툴의 기본적인 사용법인 Scene에 오브젝트를 추가하는 법, 축에 대한 이해 및 조작법, 오브젝트에 컴포넌트를 추가하는 방법을 익힐 수 있었다.
그뒤로 지루한 C# 기초문법 강의가 계속되었다.(강사님 저는 C#만 10년 했습니다..)
그리고 가장 흥미로웠던 내용하나.
Unity는 잘 만들어진 Component의 조합으로 원하는 기능을 만들어 내는
Composite Pattern
으로 개발한다는 것. Unity의 핵심 패턴이라고 한다.
위에서 추가하였던 3D Cube 오브젝트에는 Transform, Mesh Filter, Box Collier, Rigidbody 컴포넌트가 각각 서로의 영향을 받지않고 동작한다.
추가로 C# 스크립트를 활용하여 위로 살짝 점프했다가 떨어지는 기능도 구현하였다.
‘Project’ 메뉴에서 Assets 화면에서 마우스 오른쪽 클릭하여 Context 메뉴에서 ‘Create’ – ‘C# Script’를 선택하여 C# 스크립트를 추가한다. 이름은 간단하게 ‘Jump’로 한다. 생성된 Jump 아이콘을 더블클릭하면 이제 친숙한 Visual Studio가 실행되면서 C# 파일을 편집할 수 있다.
Jump 클래스에서 Rigidbody type의 public filed를 하나 만들고, Start에서 rigidbody의 AddForce() 메서드를 호출하여 y값을 300 으로 설정하였다. 컴파일할 필요도 없이 Ctrl + S 키를 눌러 저장하고 다시 Unity로 돌아온다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Jump : MonoBehaviour { public Rigidbody rigidbody; void Start () { rigidbody.AddForce(0, 300, 0); } }
‘Project’ 메뉴에서 Jump를 선택하고, ‘Hierarchy’의 Cube에 Drag&Drop하면 작성하였던 스크립트가 해당 오브젝트에 적용이 된다. ‘Inspector’에 Jump script가 추가된 걸 확인할 수있다.
아직 한가지 작업이 더 남았다. 아까 public Rigidbody rigidbody 필드를 생성했는데, 이것을 3D Cube가 이미 가지고 있는 Rigidbody와 연결시켜주어야 한다. 어떻게 하냐구?
‘Inspector’ 화면에서 Righdbody 글자를 Drag하여 Jump (Script)의 None (Rigidbody) 박스에 Drop!
작업 끝! 다시 화면 중앙에 있는 Play 버튼 (▶)을 클릭하면 3D Cube가 위로 살짝 떠올랐다가 떨어지는 화면을 볼 수 있다.
이것으로 C# 스크립트를 어떻게 사용하는지도 배우게 되었다.
잼있다. 진짜 잼있다! 피곤한 교육 일정이지만 재미있게 배울수 있을 것 같다.