이번에는 간단한 C# 스크립트 예제를 통하여 Unity3D의 객체를 움직여보도록 하겠습니다.
우선 새로운 프로젝트를 만들도록 합니다.
새로운 프로젝트 이름은 SolarSystem이라고 하도록 하겠습니다.
새로운 Unity3D 프로젝트 패스는 중요하지 않습니다. 패키지 추가는 필요하지 않으므로 아무것도 선택하지 않습니다. (나중에 얼마든지 패키지는 추가할 수 있습니다. 아차하고 추가하지 않았다 해도, 언제든 추가할 수 있으니 걱정 안 하셔도 됩니다.)
[Create] 버튼을 눌러서 프로젝트를 생성시키면 Unity3D 편집 화면으로 들어갑니다.
이제 새로운 스크립트를 추가하도록 합니다. 스크립트를 추가하기에 앞서서 폴더를 하나 생성토록 합니다. Project 창의 Assets 밑에 Scripts란 폴더를 생성하도록 합니다.
일반적으로 Unity3D 프로그래머는 Scripts 폴더를 만들고 그 밑에 스크립트 파일을 생성하고 있습니다. 강제사항은 아니지만, 지켜주는 것이 관리하기 편합니다.
이제 Scripts 폴더를 더블 클릭해서 해당 폴더에 들어간 후, C# 스크립트 파일을 생성합니다. C# 스크립트 파일을 생성하면 기본으로 NewBehaviour라는 이름으로 생성됩니다. 이 스크립트 파일 이름을 Roter로 바꾸어줍니다.
생성된 Roter 파일을 더블 클릭하면, 외부 에디터 프로그램(별 설정이 없었다면 MonoDevelop 프로그램이 열립니다.)이 해당 파일을 열게 됩니다. 해당 파일을 다음과 같이 수정합니다.
[Roter.cs]
using UnityEngine;
using System.Collections;
public class Roter : MonoBehaviour {
public float angleSpeed = 1.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Rotate(Vector3.up, angleSpeed*Time.deltaTime);
}
}
이 프로그램은 정해진 angleSpeed에 의해서 오브젝트를 회전하는 간단한 프로그램입니다. 편집이 끝났으면 저장하고 Unity3D로 돌아갑니다. 에디터 하단에 에러메세지가 떴다면, 프로그램 작성에 잘못이 있는 것이니, 외부 편집기에서 잘못된 부분을 고치셔야 합니다.
자 이제 Unity3D 에디터로 가서 게임 오브젝트를 만듭니다.
[GameObject] 메뉴의 [Create Empty] 메뉴를 선택하여 3개의 GameObject를 생성하고, 각각의 이름을 SolarSystem, EarthSystem, LunarSystem 으로 바꾸도록 합니다. 그러면 Hierarchy 윈도우에 다음과 같이 게임오브젝트가 생성된 것을 볼 수 있습니다.
이제는 간단하게 [GameObject]->[Create Other]->[Sphere] 메뉴를 이용하여 세개의 구를 생성하도록 합니다. 각각은 Sun, Earth, Moon 으로 이름을 바꿉니다. 그런 후 Sun은 SolarSystem에 Earth는 EarthSystem에 Moon은 Lunar System에 드래그해서 내려놓도록 합니다. 그리고 LunarSystem은 EarthSystem에 Earthsystem은 SolarSystem에 드래그해서 놓습니다.
다 펼쳐놓으면 다음과 같은 모습이 되어야 합니다.
자 이제는 EarthSystem 오브젝트를 선택한 후, Inspector 창에서 Transform의 Position을 X 값을 10정도로 바꿉니다.
마찬가지로 LunarSystem에서는 X 값을 2 정도로 바꿉니다. 그런 후에 Sun, Earth, Moon 오브젝트의 크기를 적당 크기로 변경합니다.
다음은 간단하게 재질을 입혀보도록 합니다.
[Assets]->[Create]->[Material] 메뉴를 선택해서 재질을 세개 만듭니다. 재질 이름을 각각 Sun, Earth, Moon으로 바꾸고 색을 노란색, 파란색, 흰색으로 바꾸도록 합니다.
각각의 재질들을 드래그해서 Hierarchy 윈도우에 있는 Sun, Earth, Moon에 놓습니다. 그러면 각각의 구들의 색이 변경되는 것을 볼 수 있습니다.
[GameObject]->[Create Other]->[Directional Light]를 이용하여 간단하게 조명을 설치합니다.
이제 오브젝트의 배치는 끝났습니다. Scene 윈도우에는 다음과 같은 형태로 화면이 나올겁니다.
자 이제 이 강좌의 가장 중요한 Roter 스크립트를 적용하는 것입니다.
SolarSystem 오브젝트를 클릭한 후, Roter 스크립트를 Inspector 창에 드래그해서 놓습니다.
그러면 다음과 같이 Inspector 창이 바뀌어 있게 됩니다.
붉은 색으로 줄 친 부분에 유의해주시길 바랍니다.
Roter 프로그램을 작성했을 때, 6번째 줄을 보시면 public 지시어로 변수를 하나 선언했습니다. 변수이름은 angleSpeed입니다. Unity3D에서는 스크립트에 있는 public 지시어 변수를 에디터에서 직접 수정할 수 있습니다. 이렇게 수정한 값은 계속 저장이 됩니다.
Roter 스크립트를 EarthSystem에도 넣고, AngleSpeed를 30으로 바꿉니다.
마지막으로 Main Camera를 선택하여 전체가 잘 보일만한 위치로 옮기고, 각도도 변경하도록 합니다. Camera Preview 화면을 잘 보시고, 태양을 가운데 가도록 하시고, 전체가 다 보이면 됩니다.
이런 후에 Unity3D 에디터 상단에 있는 플레이 버튼을 누르면 오브젝트가 애니메이션됩니다.
태양계 시스템을 보다 잘 시뮬레이션하려면 조금 더 복잡하게 만들어야 하지만, 여기서는 이정도로 끝내도록 하겠습니다.
'Lecture' 카테고리의 다른 글
Snake Bite 텍스트 게임 제작하기 - 2 (0) | 2019.12.11 |
---|---|
Snake Bite 텍스트 게임 제작하기 - 1 (0) | 2019.12.10 |
Unity3D의 GameObject 객체 소개 (0) | 2014.03.18 |
Unity3D의 Monobehaviour 클래스 소개 (2) | 2014.03.18 |
Unity3D와 NGUI 소개 및 설치 (0) | 2014.03.17 |
댓글