2. • 2D Shooting Game 만들기
• 유니티 설정
• 캐릭터 생성
• 배경 생성
• 총알 생성
• 적 생성
• 플레이어 충돌
• 폭발효과 넣기
• 해상도 맞추기
목차
• 사운드 입히기
• 스코어 출력하기
• 이동영역 제한하기
• 파워업 만들기
• 재시작 만들기
• 메인 메뉴 만들기
• 크레딧 만들기
6. • Windows 사용자는 계정명이 영어인지 확인할 것
계정명이 한글일 경우 설치 후 100% 실행이 안되니
영어로 된 계정을 하나 생성할 것.
유니티 설정 #4
h t t p : / / g o o . g l / o D 9 M u Q
첨 부 파 일 ( 준 비 물 ) 다 운 로 드 ! ! !
h t t p : / / g o o . g l / 9 H EC r m
게 임 에 쓰 일 스 크 립 트 모 음
7. • 개발환경 설정
유니티 설정 #5
File – New Project 선택
Project Location에 원하는 프로젝트 명을 적어준다.
Ex)Shooting Project 등, 단 무조건 영어로!
Setup defaults for 에서 2D를 선택하고 Create를 누른다.
8. • 개발환경 설정
유니티 설정 #5
화면 우측 상단에서
Layout을 2 by 3으로 설정
Project 옆에 있는 ▼三 을 누른뒤 One Column Layout을 선택해준다.
9. Ctrl + 1 Scene 창 선택
Ctrl + 2 Game 창 선택
유니티 설정 #6
Scene 창 사용자가 작업하는 화면
Game 창 작업물이 완성되어 플레이를 할 때의 화면
Hierarchy 창 현재 장면의 모든 게임 오브젝트를 포함하는 창
Project 창 게임에 쓰이는 스크립트나 그림 파일을 담아놓는 창
Inspector 창 현재 선택 된 것의 정보를 상세하게 보여주는 창
Scene 창에서
마우스 휠 줌인, 줌아웃
마우스 휠 클릭 이동
Alt + 마우스 왼쪽 버튼 클릭 객체를 중심으로 회전
마우스 오른쪽 버튼 클릭 카메라를 중심으로 회전
10. 캐릭터 생성 #1
• 드래곤(주인공) 만들기
GameObject – Create Other – Quad 클릭
Hierarchy 창에 Quad가 생성 된다
Quad의 Transform 설정값
Position (0, 0, 0)
Rotation (0, 0, 0)
Scale (2, 2, 1)
11. 캐릭터 생성 #2
Project 창에서 Create – Folder 혹은 마우스 우클릭 - Create – Folder 클릭
Texture로 이름을 짓는다.
( ※나중에 이름 변경을 원하면 윈도우:F2, 맥OS : return(엔터) 버튼으로 가능 )
예제 파일에 있는 background와 dragon을 방금 만든 Texture 폴더에 드래그로 넣는다.
12. 캐릭터 생성 #3
Texture 폴더 안에 들어가있다.
Quad을 누른 상태에서 드래곤을 드래그 하여
Inspector의 빈 자리에 드래그 하여 넣는다.
Quad에 그림이 입혀졌다.
13. 캐릭터 생성 #4
흰색을 투명하게 만들어보자.
Hierarchy창의 Quad을 누른다.
오른쪽의 Inspector 창에 보면 맨 아래 dragon 메테리얼이 보인다.
Shader 옆에 Diffuse를 누른 후 Particles – Alpha Blended 클릭
흰색 바탕이 투명해졌다.
14. 캐릭터 생성 #5
ExamplePackage를 Project 창 안에 드래그 한다.
Project 창에서 Create – Folder 혹은 마우스 우클릭 - Create – Folder 클릭
폴더의 이름을 Script 라고 이름을 짓자.
ExamplePackage를 더블클릭하면 Import 창이 나온다.
Import를 눌러 가져온다.
15. 캐릭터 생성 #6
Plane을 누른 상태에서 CAnimation을 드래그 하여 넣는다.
Project 창의 ExamplePackage파일은 선택한 상태에서 키보드의 Delete 키를 눌러 지운다.
스크립트가 (컴포넌트로 추가된 것이) 보일 것이다.
맨 위에 재생 버튼을 눌러 실행해본다.
아무것도 안나올 것이다.
재생버튼을 다시 눌러 재생을 풀어준다.
16. 캐릭터 생성 #7
그림이 아무리 길어도 오른쪽 끝이 1이고, 위가 1이다.
유니티에서 그림을 입히는 UV(Offset)의 범위는 다음과 같다.
Tiling은 칸을 나눈다는 뜻이고,
Offset은 표시할 지점의 좌표라는 뜻이다.
17. 캐릭터 생성 #8
화면과 동일하게 입력한다.
dragon.png를 보면 세로로는 6칸, 가로로 4칸이다.
1/6은 약 0.166이며, 1/4는 0.25다.
용을 출력 해야하기 때문에 OffsetY는 밑에서부터
5번째부터 시작하기 때문에 0.166 * 5로 해서 약 0.833이다.
Canimation 패러미터 설명
OffsetX 한번에 이동할 X좌표 크기
OffsetY 애니메이션이 시작할 위치의 y좌표
ScaleX, ScaleY 그림당 가로 세로 크기
Animation Speed 애니메이션이 되는 속도
Sprite Number 애니메이션 프레임의 개수
용 애니메이션이 진행될 것이다.
18. 캐릭터 생성 #9
Plane이름을 Dragon으로 변경.
GameObject라는 것이 생겼을 것이다.
Player로 이름을 바꿔준다.
이제 용을 방향키에 맞게 이동시켜보자.
GameObject – Create Empty 클릭
Dragon을 Player에 드래그 하여 넣는다.
Player 안에 Dragon이 들어갔다.
Player의 좌표를 0, 0, -3으로 바꾼다.
19. 캐릭터 생성 #10
Script 폴더에서 마우스 우클릭 – Create – C# Script 클릭
MonoDevelop가 실행된다. MonoDevelop는 스크립트를 편집할 수 있는 프로그램이다.
Player라고 이름을 짓는다. 더블 클릭하여 들어간다
20. 캐릭터 생성 #11
스크립트란?
- 사용자가 움직이거나 변형하고 싶은 물체(오브젝트)를 스크립트를 이용하여 마음대로 바꿀 수 있다.
*스크립트를 작성할 때 꼭 대소문자를 구분해줘야 한다!!!
이와 같이 작성한다.
F7을 누르면 빌드가 되고 오류가 없다면 화면 중앙에 성공했다는 글이 나온다.
21. 캐릭터 생성 #12
Hierarchy 창에서 Player를 누른 상태에서 Player 스크립트를 드래그 하여 Inspector창에 넣는다.
실행을 하면 오른쪽 왼쪽 방향키에 따라 용이 좌우로 움직일 것이다.
이제 위 아래로도 움직여보자. MonoDevelop을 열어 아래와 같이 추가로 작성을 한다.
F7을 눌러 빌드를 한 후 유니티에서 실행버튼을 눌러보자. 위아래로도 움직일 것이다
22. 배경 생성 #1
Game 창에서 화면 사이즈를 1024x768로 선택한다. 게임의 해상도를 정하는 설정이다.
GameObject – Create Other – Cube 클릭
23. 배경 생성 #2
큐브의 정보를 위와 같이 입력한다.
Background 그림을 Cube에 드래그 하여 넣는다.
Particles – Alpha Blended
Cube에서 Shader의 정보를 위와 같이 바꿔준다
24. 배경 생성 #3
Project 창 - Script 폴더 – 마우스 우클릭 – Create – C# Script – 이름을 Background로 만든다.
더블클릭 하여 MonoDevelop를 켠다.
이와 같이 작성한다.
F7을 눌러 빌드를 하여 성공을 하였는지 확인한다
25. 배경 생성 #4
Cube를 선택한 상태에서 Background 스크립트를 드래그 하여
Cube의 Inspector 창에 넣는다.
재생을 하면 배경이 움직일 것이다.
26. 배경 생성 #5
Project 창에 Scene이란 폴더를 만들자.
File – Save Scene 혹은 Ctrl + S를 누른다.
Assets 폴더가 나오는데, Scene 폴더가 있다.
더블클릭 하여 들어간 다음 Game이라고 저장해주자
27. 배경 생성 #6
그럼 Project 창의 Scene 폴더 안에 Game이란 씬 파일이 생성되었다.
이처럼 각각의 씬을 만들고 저장할 수 있다.
Cube의 이름을 Background로 바꿔준다
31. 적 생성 #1
GameObject – Create Empty 클릭
SpawnEnemy로 이름을 바꾼다. Spawn : (알을)낳다
SpawnEnemy의 좌표를 (0, 8, -3)으로 해준다.
32. 적 생성 #2
Script에서 C# Script를 만들어 SpawnEnemy를 만든다
위와 같이 변수를 적는다
Enemyspawn 설정값
Enemy 생성될 적 객체
rangeX 적이 생성될 x좌표 범위
enemyTime 적이 생성되는 시간
fElapsedTime 저장될 시간 (표시시간)
33. 적 생성 #3
Instantiate(Enemy, this.gameObject.transform.position + new Vector3(_randomX, 0, 0), Quaternion.identity);
이부분이 적을 생성하는 코드이다.
F7을 눌러 빌드를 한다. 오류가 없다면 왼쪽 아래에 Build Success가 나올 것이다.
34. 적 생성#4
Hierarchy 창의 SpawnEnemy를 선택 후
Project창의 SpawnEnemy를 Inspector창에 드래그를 한다.
Inspector창에서 RangeX와 EnemyTime의 수치를 바꿀 수 있다.
Project창의 Enemy를 드래그 하여 None으로 되어있는 자리에 넣는다.
실행을 하면 적이 미사일을 쏘면서 내려오는 것을 볼 수 있다.
35. 플레이어 충돌 #1
실행을 하면 헬리콥터가 쏘는 미사일에는 용이 맞지 않는 것을 볼 수 있다.
먼저 물리 설정을 해준다.
Player를 누른 상태에서 Component – Physics – Rigidbody 클릭
Player에 Rigidbody가 추가되었다.
Use Gravity의 체크를 해제해준다.
이것은 중력을 사용하겠다는 설정인데, 필요 없으므로 과감하게 체크 해제!
36. 플레이어 충돌 #2
이제 충돌체크 설정을 하자.
Component – Physics 2D – Box Collider(2D)를 눌러준다
Player에게 BoxCollider2D가 추가되었다.
Is Trigger를 꼭 체크를 해주어야 한다.
Is Trigger는 다른 물체와 부딪혔을 때 밀리지 않고 그냥 지나가게 만들어준다.
미사일과 부딪혔을 때 밀리면 안되기 때문.
37. 플레이어 충돌 #3
Scene 창에서 Box collider의 충돌 범위를 볼 수 있다.
Inspector창에서 Size를 조절하면 충돌박스의 크기를 조절할 수 있다.
( 0.5, 0.5, 1)로 설정
38. 플레이어 충돌 #4
Player의 Inspector창에서 Tag 옆에 Untagged를 누르면 Player라고 있을 것이다.
Player를 클릭.
실행하면 Player도 헬리콥터의 미사일에 맞아서 없어지는 것을 볼 수 있다.
39. 폭발효과 #1
GameObject – Create Other – Quad 클릭
CAnimation스크립트와 미리 만들어 둔 dragon 매터리얼을 드래그해서 추가한다
Transfor과 Canimation의 값을 왼쪽과 같이 바꿔준다
47. 해상도 맞추기 #2
Y Axis
FieldOfView
Near
Clipping
Plane
Far
Clipping
Plane
Y Axis
Size
Near
Clipping
Plane
Far
Clipping
Plane
원근(Perspective) 직교(Orthographic)
49. 사운드 입히기 #2
Main Camera를 선택 후 BGM 사운드 파일을 드래그 하여
Inspector 탭에 넣는다
50. 사운드 입히기 #3
Play On Awake와 Loop를 체크한다. Play On Awake는 씬이 시작될 때 재생되고,
Loop는 노래가 끝나면 처음부터 다시 재생되는 기능이다.
51. 스코어 출력하기
Hierarchy에 있는 GUI Text의 이름을 Score로 변경
Script -> Create -> C# Script 생성 Score로 이름 변경 후 아래 내용 입력
52. 스코어 출력하기
Player 스크립트의
public GameObject bullet; 아래에
public int KillEnemyCount = 0; 을 추가한다.
GUI Text안의 내용을 왼쪽과 같이 바꿔준다.
53. 이동 영역 제한하기
기존의 Update() 안에 있던 float dirX와 dirY의 내용을 아래와 같이 수정해준다.
54. 파워 업 만들기
적을 11마리 이상 죽이면 플레이어가 발사하는 총알이 2배가 될 수 있도록 만들어 볼 것이다.
Player 스크립트의
public GameObject bullet; 아래에
public GameObject bullet2; 을 추가한다.
하단 Update() 에 있는 (Input.GetKeyDown ~ 의
내용을 왼쪽과 같이 바꿔준다.
55. 파워 업 만들기
Hierarchy에 있는 Player에 Bullet2가 생긴 것을 볼 수있다.
Bullet2에 Bullet 프리팹을 드래그 해서 넣어준다.
56. 재시작 만들기
좌 상단의 메뉴에서 File클릭 후 Save Scene as… 클릭 후 Scene폴더에 파일 이
름을 InGame으로 저장
클릭 후 - RestartButton이라고 이름을 변경
57. 재시작 만들기
Add Component – Mesh – TextMesh
RestartButton이라는 이름의 스크립트를 생성 후 다음과 같이 코드 작성
클릭 후 - RestartButton이라고 이름을 변경
62. 메인 메뉴 만들기
File에서 New Scene 클릭
새롭게 만들어진 씬
좌 상단의 메뉴에서 File클릭 후 Save Scene as…
클릭 후 Scene폴더에 파일 이름을 MainMenu로 저장
3번 배경만들기와 동일하게 배경을 만들고 이름을 Background로 변경한다.
63. 메인 메뉴 만들기
GameObject를 2개 생성하고 각각 이름을 CreditButton과
InGameButton 으로 변경시켜준다.
두 개의 오브젝트에 왼쪽과 같이
Add Component – Mesh – TextMesh 추가 시켜준다.
64. 메인 메뉴 만들기
스크립트 생성 후 SceneControl이라 이름 변경하고 아래와 같이 작성
이후 Background 오브젝트에 스크립트를 드래그 앤 드랍.
7번 해상도 맞추기처럼 카메라를 변경 해준다.
65. 크레딧 만들기
File에서 New Scene 클릭
새롭게 만들어진 씬
좌 상단의 메뉴에서 File클릭 후 Save Scene as…
클릭 후 Scene폴더에 파일 이름을 Credit로 저장
3번 배경만들기와 동일하게 배경을 만들고 이름을 Background로 변경한다.
66. 크레딧 만들기
생성하고 이름을 BackButton 으로 변경시켜준다.
두 개의 오브젝트에 왼쪽과 같이
Add Component – Mesh – TextMesh 추가 시켜준다.
67. 크레딧 만들기
스크립트 생성 후 BackButton이라 이름 변경하고 아래와 같이 작성
이후 Background 오브젝트에 BackButton 스크립트를 드래그 앤 드랍한다.
68. 크레딧 만들기
클릭 후 - Credit라고 이름 변경
Credit이라는 스크립트를 만들어서 아래와 같이 작성
이후 Credit 오브젝트에 스크립트를 드래그 앤 드랍