06강) 비행기 생성 및 움직이기 |
이번 시간에는 유니티에서 직접 비행기를 생성해보고 움직여보는 것을 해보겠습니다.
미리 새로운 프로젝트를 생성하고 시작합시다.
비행기를 생성해보자) 이미지 준비 |
비행기를 생성하기 전에 먼저 이미지를 준비해야합니다.
이미지? 왜? |
2D 프로젝트에서는 모든 오브젝트는 "sprite"를 기준으로 만들게됩니다. 이 sprite는 이미지를 입혀서 사용하게 되죠. |
이때 이미지는 "자신이 직접 만들"거나 "Free License"를 이용하는 것이 좋으며, 이미지 소스를 "유료로 사서" 사용해도됩니다.
(즉, "라이센스"를 확보해야합니다.)
라이센스 확보? 왜? |
컴퓨터에서는 "라이센스"가 정말 중요합니다. (저작권) 컴퓨터에는 라이센스가 무척 많으며, 라이센스가 적용된 소스를 라이센스 규칙에 맞춰 사용하지 않으면 법적 처리를 받을 수 있습니다. |
그래서 무료이고 "No Copyright Image" 사이트를 알려드리겠습니다.
Pixabay |
바로가기 : 클릭 |
아주 대표적인 사이트입니다.
그리고 하나 더 유명한 사이트가 있긴한데...
바로가기 : 클릭 정말 유명한 "핀터레스트"라는 사이트가 있습니다만.. 이 사이트에 올라와있는 대부분의 이미지는 "저작권이 존재, 그러나 불펌"이 많습니다. 하지만 유료 sprite를 찾는데에는 매우 유용합니다. |
이렇게 하여 비행기 이미지를 구합니다.
(이미지 출처 : Pixabay)
저는 위의 이미지를 구했습니다.
비행기를 생성해보자) 이미지 가공 |
이제 이 이미지를 가공을 해야합니다.
막간 상식!! |
이미지 가공을 하면 "1차 수정(혹은 2차 라이센스)"이 붙습니다. 이러한 것들 때문에 "라이센스 확보"가 정말 중요합니다. |
포토샵을 사용하건, 포토스케이프를 사용하건, 어떤 프로그램을 사용해도 상관이 없습니다.
이미지를 자신에게 맞게 수정을 합니다.
그런데 그 전에!!!
항상 원본 이미지는 따로 챙겨두면 좋다는 것!!
(권장하는 것이지, 강요하는 것이 아닙니다.)
이렇게 저는 수정을 하였습니다.
여기서 중요한 것은 "배경은 투명으로" 해야합니다.
비행기를 생성해보자) 이미지를 에셋폴더에 넣기 |
이제 원본 이미지와 가공 이미지가 생성되었습니다.
(원본 이미지는 없어도 됩니다.)
이제 이 이미지를 새롭게 만든 프로젝트 폴더 안에 집어넣어야합니다.
우리가 만든 프로젝트가 저장된 폴더로 갑니다.
여기서 "Assets(이하 에셋)"으로 들어갑니다.
모든 오브젝트 데이터는 "Assets" 폴더에 |
모든 오브젝트 관련된 데이터는 "Assets"폴더에 넣게됩니다. |
우리는 프로젝트를 처음 만들었기 때문에 에셋폴더에 아무것도 없을 겁니다.
여기에 다음과 같이 폴더를 만듭니다.
Images라는 이름의 폴더를 만들었습니다.
(자신이 원하는 이름으로 해도 됩니다. 한글도 됩니다.)
모든 이름은 "뜻"이 있어야 한다. |
이름만 보고도 저게 뭔지 대충 알 수 있도록 만드는 것이 현명합니다. |
이제 저 Images라는 폴더에 아까 찾아서 가공한 2개의 이미지 파일을 넣습니다.
(원본 이미지가 없다면, 가공한 이미지만 넣어도 됩니다.)
그리고 만약에 원본 이미지가 있다면, "가공된 이미지 이름 + _origin"을 붙여서 해주는 것이 좋습니다.
(origin : 원본)
(자기가 원하는 대로 이름지어도 됩니다.)
비행기를 생성해보자) 이미지를 Sprite에 적용시키기 |
이제 준비한 이미지를 Sprite에 적용시켜봅시다.
"2D Object"에서 "Sprite"를 생성해줍니다.
새로 생성된 "Sprite"를 선택하고 "Inspector"부분의 "Sprite Renderer" 구간의 "Select Sprite 버튼"을 클릭하여 아까 우리가 넣었던 이미지를 선택합니다.
그러면 이렇게 이미지가 입혀지게 됩니다.
만약에 이미지 크기가 너무 크다면
알맞게 이미지를 줄여주세요.
이미지 크기는 에초에 이미지를 가공할 때 적당한 크기로 만들자 |
게임상에서 이미지를 불러올 때는 다음과 같이 불러오게 됩니다. 게임 에디터에서 이미지를 입혀서(원본 크기 : 1000px) 크기를 오브젝트 크기 줄이기로 줄였다.(줄인 크기 : 500px) 하지만 게임상에서는 원본 이미지를 대상으로 불러오기 때문에 에초에 이미지를 가공할 때 미리 적당한 크기로 줄여놓자. |
비행기에 생명을) 움직이도록 만들어보자 |
이제 비행기가 생겼으니 움직이도록 해봅시다.
유니티에서 키보드를 사용하여 움직이는 방법은 크게 2가지로 나뉩니다.
키보드를 통하여 움직이는 방법 |
1) 미리 정의된 "수평", "수직" 키를 이용하는 방법 2) 직접 정의하는 키를 이용하는 방법 |
이 중에서 저는 2번 방법을 이용하여 알려드리겠습니다.
먼저 스크립트 파일을 넣을 폴더를 하나 만들어줍니다.
그리고 이 폴더안에
자신이 원하는 이름으로 C#스크립트 파일을 만듭니다.
이제 이 스크립트 파일을 열어서 수정을 합시다.
키보드를 통하여 입력을 받는 방법 |
크게 6가지 방법이 존재합니다. 1) Input.GetKey(키코드) : 해당 키를 눌렀을 때 2) Input.GetKeyDown(키코드) : 해당 키를 누르기만 했을 때 3) Input.GetKeyUp(키코드) : 해당 키를 눌렀다가 뗐을 때 4) Input.GetButton(정의된_키) : 해당 키를 눌렀을 때 5) Input.GetButtonDown(정의된_키) : 해당 키를 누르기만 했을 때 6) Input.GetButtonUp(정의된_키) : 해당 키를 눌렀다가 뗐을 때 즉, GetKey = GetKeyDown + GetKeyUp, GetButton = GetButtonDown + GetButtonUp 이다. |
using UnityEngine; public class Player_Move : MonoBehaviour { public float Speed = 3f; // Update is called once per frame void Update () { // 매 프레임마다 메소드 호출 Move(); } // 움직이는 기능을 하는 메소드 private void Move() { if(Input.GetKey(KeyCode.UpArrow)) // ↑ 방향키를 누를 때 { // Translate는 현재 위치에서 ()안에 들어간 값만큼 값을 변화시킨다. transform.Translate(Vector2.up * Speed * Time.deltaTime); // Time.deltaTime은 모든 기기(컴퓨터, OS를 망론하고)에 같은 속도로 움직이도록 하기 위한 것 } if(Input.GetKey(KeyCode.DownArrow)) // ↓ 방향키를 누를 때 { transform.Translate(Vector2.down * Speed * Time.deltaTime); } if(Input.GetKey(KeyCode.RightArrow)) // → 방향키를 누를 때 { transform.Translate(Vector2.right * Speed * Time.deltaTime); } if(Input.GetKey(KeyCode.LeftArrow)) // ← 방향키를 누를 때 { transform.Translate(Vector2.left * Speed * Time.deltaTime); } } }
여기서 "Speed" 변수는 "public float"형으로 선언을 하였습니다.
Speed 변수 |
public : 변수를 public으로 선언을 하면 외부 클래스 뿐만 아니라 에디터에서도 직접 해당 변수를 변경이 가능합니다. float : Translate에서 사용하는 변수는 float형 입니다. |
이렇게 만든 스크립트를 Sprite에 적용시켜봅시다.
이렇게 만든 Sprite를 오브젝트로 만들어 보관합시다.
먼저 Sprite를 저장할 폴더를 만들고
원하는 이름으로 변경 후에 폴더로 드래그하면 자동으로 저장됩니다.
비행기에 생명을 |
이제 비행기에 생명을 넣었으니 실행시켜봅시다.
게임 실행버튼을 누르고 방향키를 누르면 잘 움직이게 됩니다.
(안된다면 뭔가 잘못했겠죠?)
다음 시간에는 |
다음 시간에는 미사일을 만들고, 발사를 해보겠습니다.
'Study > Unity 5(유니티5)' 카테고리의 다른 글
유니티 5(Unity 5) 왕초보를 위한 간단한 비행기 슈팅게임 만들기(C#) - 08 [미사일 발사2] (9) | 2017.04.01 |
---|---|
유니티 5(Unity 5) 왕초보를 위한 간단한 비행기 슈팅게임 만들기(C#) - 07 [미사일 발사1] (7) | 2017.03.12 |
유니티 5(Unity 5) 왕초보를 위한 간단한 비행기 슈팅게임 만들기(C#) - 05 [게임의 요소 결정 및 구상] (0) | 2017.02.10 |
유니티 5(Unity 5) 왕초보를 위한 간단한 비행기 슈팅게임 만들기(C#) - 04 [C# 프로그래밍의 기초3] (1) | 2017.01.30 |
유니티 5(Unity 5) 왕초보를 위한 간단한 비행기 슈팅게임 만들기(C#) - 03 [C# 프로그래밍의 기초2] (0) | 2017.01.27 |