연재

[자작] 유니티로 게임을 만들자! -6- 꼬물거려라 히어로!편

안녕~


1편 http://www.dogdrip.net/index.php?mid=userdog&search_target=nick_name&search_keyword=Go2Heaven&document_srl=49900277&page=1

2편 http://www.dogdrip.net/49909933

3편 http://www.dogdrip.net/49913932

4편 http://www.dogdrip.net/49919851

5편 http://www.dogdrip.net/49963674



그리고 오늘의 결과물은 여기서 확인 가능. (무료 계정이라 트래픽 열라 조금임. 리플레쉬 ㄴㄴ)


http://unitydatas.besaba.com/InfiniteHero3/

클릭아 안되는 사람은 다른 텝 갔다가 다시 클릭!


[애니메이션]

생각해보니 히어로가 너무 움직임이 없어서 애니메이션을 추가하기로 전격 결정!


hero.png파일에 움직임을 표현할 그림을 그리자!

2컷으로 표현할꺼임.hero.png이게 번갈아 가면서 보여지는 거다.


Assets에 있는 hero그림파일을 선택하고 Inspector에서 Sprite Mode를 Multiple로 변경한다.


3.png


그리고 메뉴의 Window > Sprite Editor를 눌러서 Sprite Editor를 열자.


2.png 

 

그런후에 왼쪽 위에 있는 Slice를 눌른후 Slice버튼을 눌르고 Apply하자.

자동으로 그림파일을 Slice해서 2개의 그림파일로 (정확히는 스프라이트)로 나눠준다! 참 기특하다!

4.png


그런다음 Assets에 있는 Hero그림파을을 보면 아래와같이 2개의 스프라이트로 나뉘어져 있는걸 볼 수있다.

이거를 두개를 선택해서 (컨트롤이나 쉬프트로 2개 선택하는거 알지?) 과감하게 Hierarchy로 투척!

이름은 aniHero로 하자.


6.png 


그라면 이라케 됨.

5.png 


scale 1의 hero_0가 생성되었는데, 옆에 Assets폴더에도 aniHero, hero_0이 생성되었다.

aniHero는 에니메이션 파일이고 hero_0는 컨트롤러인데 일단은 몰라도됨.

근데 우리는 이미 hero가 있자나.

과감하게 Assets에 있는 hero_0과 Hierarchy에 있는 hero_0을 지운다.


그리고 Assets에 있는 aniHero를 드래그앤 드롭으로 원래의 hero에 투척!

이때 hero 컨트롤러가 Assets 폴더에 자동으로 생긴다.

컨트롤러는 아까 지운 Assets에 있는 hero_0 와 같은 모양의 아이콘을 가지고 있음.

확장자가 따로 안나오니깐 아이콘을 보고 알아봐야 한다.

아무튼 이 컨트롤러도 우리가 잘 몰라도 된다.


자 이제 거의다 왔다.


그리고 Hierarchy에 있는 hero오브젝트를 클릭하고 Inspector에서 Box콜라이더의 사이즈를 좀 바꿔주자.

눈치 빠른 게이들은 알겠지만, 0.01당 1픽셀이다. 픽셀은 점하나, 도트랑 같다고 보면 됨.


그리고 가장중요한 Animator 항목에서 Apply Root Motion의 체크를 해/제/한/다.

안그러면 움직일때마다 점점 올라감.

7.png


실행시키면 이제 다리를 꼬물딱 거리면서 움직인다.



[점수]


점수가 없으면 게임이 아니다.

점수가 있어야 게임이지.


여러가지 방법으로 점수를 정할 수 있는데

가령 이게임에서는 불꽃을 피한 횟수라던지, 플레이 타임이라던지 등등

둘중에 뭘로 할까 고민하다가 플레이 타임으로 하기로 했다.

뭐 나중에 개발 다 해놓고 바꿔도 되는거니깐 긴 고민이 필요 없음.

이런거는 나중에 고민해도됨.


일단 플레이타임을 관리할 스크립트가 필요한데 아까 만들어 놓은 csFireManager에게 모든일을 시키자.


(정색) 원래 정석은 csGameManager등으로 따로 관리해야 합니다.

클래스의 이름을 보고 그 클래스가 하는 일을 유추할 수 있어야 하기 때문입니다.

csFireManager에 점수 관리하는 기능이 들어가 있는 것은 매우 나쁜 행동입니다.

이글을 보고 계시는 시청자중에서 꼬꼬마 어린이는 절대로 따라 해서는 안됩니다.


csFireManager를 더블클릭해서 열자.

내용이 길어지니 앞뒤자름.


......................................

//점수

float score = 0.0f;

//점수를 표시할 오브젝트

public GUIText textScore;


//타이머

float timer =0.0f;

float timerMax = 0.3f;

void Update () 

{

//점수에 시간을 더해준다.

score += Time.deltaTime;

//점수를 표시한다.

textScore.text = (Mathf.Floor(score*100)/100).ToString();

//타이머에 시간을 더해 준다.

timer += Time.deltaTime;

.....................


빨간색만 잘 가져다가 원래 코드 사이 사이에 붙여 넣는다.


선생님 붙여 넣었는데 빨간색으로  안나오는데요. 하면 혼나는거임.


빨간색은 걍 내가 바뀐 부분만 강조해 놓은거임.


여기서 새로운 GUIText가 나왔는데 저넘은 머냐면 화면에 글씨를 그려주는 놈임.

지금은 변수만 추가한거고 이따가 실제 오브젝트를 추가할꺼임. 어디다가? 어디긴 어디야 Hierarchy지. ㅋㅋ

그리고 밑에 새로운 녀석이 등장했지.


Mathf.Floor(숫자) 라는 함수임. 저넘은 Floor 올림이냐? 반올림이냐? 버림이냐? 수학시간에 안자고 잘 들은 사람은 알꺼임.

암튼 소숫점 밑에를 정리해 줌. 내가 찾기 귀찮아서 걍 저거 썻는데 버림을 써야 맞겠지? 별차이는 없다.

근데 왜 곱하기 100 나누기 100을 하냐면 소수점 이하를 전부 버리는게 아니라 소수점 2째 자리까지는 살릴려고 그러는거임.

1.9875 * 100 = 198.75을 소수점 버리면 198을 100으로 나누면 1.98임. 1.9875 가 1.98이됨. ㅇㅋ? 사실 이거는 프로그래밍도 아니고 수학이다.

수학을 잘해야 하는 이유가 여기 있는 거시다.  뒤에 ToString()은 딱봐도 뭐하는 건지 알겠지? 숫자를 문자로 변환하는 것임.

String은 치즈막대가 아니라 문자열이다. ㅇㅋ?


(정색) 개발자를 꿈꾸는 어린이 여러분이라면 수학을 좀 해야 합니다.

두점 사이의 거리나 각도를 구한다거나, 자연스러운 움직임을 구현하기 위한 가속도는 얼마인지 등을 구현하기 위해서는 수학은 필수 입니다.

또한 이미지의 회전이나 3D좌표계에서의 회전 등을 어렵지 않게 이해 하기 위해서는 행렬 등의 수학지식도 필요합니다.

그러니 당장 개드립을 멀리하고 수학을 공부합시다.

 

빡시게 할필요가 있다는 말은 아니고 그냥 개념정도는 파악하고 있어야 한다.

어짜피 계산은 컴퓨터가 해줌. 너는 그 계산을 하기 위한 공식을 만들어 낼 줄은 알아야 함.


다시 원래로 돌아와서 지금 시간을 표시하는 부분을 구현중이였지?


코딩은 다 됐으니 이제 그걸 하자!


메뉴의 GameObject에서 Create Other > GUI Text를 선택

1.png


그런다음 아래와 같이 셋팅하자.

이 GUI가 앞에 붙은 놈들은 좌표계가 좀 달라서 왼쪽 아래를 0,0으로 하고 오른쪽 위가 1,1이다.

그러니 0.5, 0.9라는 말은 X는 가운데, Y는 화면의 위 90%지점을 가리킨다.

크기는 30 스타일은 Bold로

8.png


그리고 GameObject에 있는 csFireManager스크립트에 Hierarchy에 생성된 GUI Text는 오브젝트를 투척해야지.


9.png


그리고 실행하면 시간이 흐른다~

우왕굳 이제 사람들이랑 경쟁을 할 수 있어!

누가 누가 오래 버티나를 할 수 있다고!


그전에 게임오버를 만들어야 겠지...


[게임오버]

튜토리얼이니깐 간단하게 하자.

불덩이에 맞으면 죽고 시간이 멈추고 GameOver가 뜨는 걸로 하자.


먼저 코딩을 하자. 원래 싫은것 부터 하는거임.

csFireManager(라고 쓰고 게임 메니저라고 읽는)을 더블 클릭하자.


//점수

float score = 0.0f;

//점수를 표시할 오브젝트

public GUIText textScore;

public GUIText textGameOver;

//static이란 어디서든지 접근이 가능한 변수이다.

public static bool isGameOver = false;


//타이머

float timer =0.0f;

float timerMax = 0.3f;

void Update () 

{

if (csFireManager.isGameOver == true)

{

textGameOver.enabled = true;

Time.timeScale = 0;

return;

}


붉은 부분만 복붙하자.


static이라고 새로 나온 놈인데 이것이 붙어 있으면 클래스 이름 바로 뒤에 쓸수 있는데... 

여기서 더 깊~숙~히~ 들어가면 니가 아파할 것 같아 그만할께.

암튼 게임오버를 관리하는 변수이다. 이놈이 true면 게임오버 false면 게임 안오버 ㅋㅋ

textGameOver.enabled의 enabled는 보였다 안보였다를 할 수 있다.

Time.timeScale = 0는 시간을 멈출 수 있다!!!

이것은 게임 중간에 잠시 멈춤 등으로 이용할 수 있다.


자 이제 GameOver 오브젝트를 만들자 위에 시간 텍스트를 만든것 처럼 GUI Text를 생성하자.


아까만든 시간도 이름이 GUIText이고 이넘도 GUIText니깐 햇갈린다. 이름을 바꿔주자.

GameOver라고 처음에 있는 빨간박스가 오브젝트의 이름임.

여기에 이름을 바꿔주고 나머지는 아래와 같이 셋팅.

역시 게임오버는 크고 아름답게!

10.png


그리고 게임 오버시에만 나와야 하니깐 GUIText앞에 있는 체크박스를 해제 해서 보이지 않게 해준다.


그리고는 GameObject를 선택하고 Inspector에 있는 Cs Fire Manager의 Text Game Over에다가 투척한다.


11.png


이제 실행하면 불덩이에 맞으면 Game Over가 뜬다.


이번편은 여기서 마무리하고


좀더 가다음어서 다음이 진짜 마지막이 될 듯!


그리고 프로그래밍 좀 하는사람은 굉장히 불편한 내용들이 많을 꺼임.

저걸 왜 저딴식으로 써 하는것들.... 걍 유니티에 대한 전반적인 겉핡기라고 생각해줘.

"그림파일 쭉 그려 놓고 걍 드래그앤 드랍으로 애니메이션이 동작하는 구나 우왕~진짜 쉽게 되네~"이렇게 말이야 ㅋ

14개의 댓글

2014.05.21
아 완전 2일동안 만든 것치고 적절히 나왔다 ㅋㅋ

암튼 이제 남은거는

- 충돌판정을 좀더 미세하게하기
- 다시시작
- 타이틀 화면

리더보드는 오바일듯 ㅋㅋ

완성되면 시간때우기에 올릴테니 댓글로 순위쓰면 될듯함.
0
2014.05.21
@Go2Heaven
ㅇㅇ충돌체 판정이 이상해서 말할려고 했는데

씬 개념도 설명하는게 어때?
0
2014.05.21
@Go2Heaven
나도 개발 시작하면 3D게임 개발기 올려야겠다

회사 상품으로 써먹을거라 네꺼 강의처럼 전부 올리진 못하겠지만 3D 게임 이렇게 만든다 정도는 알려주고싶네
0
2014.05.23
@덜티한세상
기대할게 핡핡
0
2014.05.21
잘 써주넹~ 이런 읽게이가 있으므로 프로그램에 흥미를 가지고 다가가는 사람들이 많아지면서
플머들을 보는 눈이 높아질꺼야~


에휴 나도 이제 해외 방량을 다 다녔으니 다시 영어회화 강좌나 올려야겠어~... ㅋㅋ
미친짓하고 돌다다니다가 까먹고 있었음...
읽게이때문에 다시 생각난거니 책임지삼 ㅋㅋ
0
2014.05.21
@준가르
굳굳 너의 재능을 개드립에 기부해라 ㅋㅋ
0
2014.05.21
그거 어디갔어, 오늘의 작업물은 여기서 확인가능하다 ㅠ
0
2014.05.21
@Pajix
맨위에 있는뎅 ㅎㅎ
0
아무리 개씹쓰레기 좆같은새끼들이 댓글 달아도

존나 유용해서 개드립온다 진짜
0
2014.05.21
하... 유니티깔아놓고 유투브강좌보면서도 잘안되서 포기직전이였는데 이렇게 하나정해놓고 필요한것만 배우게되니까 머리에 들어오네 고맙다.
0
2014.05.22
우리나라게임업계쪽이 좋아졋으면좋겟다...
0
2014.05.22
화이팅!
0
2014.05.22
무조건 추천 방학때 한번 시도해봐야지
0
2014.05.23
잘읽었다
조회수적어도 열심히 해라
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5224 [연재] 공포게임하는만화.manhwa 21 <화이트데이> 신관편 8 잿더미어캣 11 2 일 전
5223 [연재] 공포게임하는만화.manhwa20 <화이트데이> 본관편 14 잿더미어캣 9 8 일 전
5222 [연재] 공포게임하는만화.manhwa19 <화이트데이> 11 잿더미어캣 14 16 일 전
5221 [연재] 공포게임하는.manhwa 18 [유튜브 관종이 되는 게임] <콘텐... 10 잿더미어캣 9 23 일 전
5220 [연재] 공포게임하는.manhwa 17 [소녀의 잔혹동화] <마녀의 집> 15 잿더미어캣 9 29 일 전
5219 [연재] 공포게임하는.manhwa16 <마녀의집MV> 10 잿더미어캣 20 2024.04.22
5218 [연재] 공포게임하는.manhwa 15[아편고양이, 캣냅편] <파피플레이... 13 잿더미어캣 23 2024.04.15
5217 [연재] 공포게임하는.manhwa 14[교권의 수호자, 미스딜라이트] <... 15 잿더미어캣 31 2024.04.08
5216 [연재] 공포게임하는.manhwa 13[4D로 즐기는 허기워기] <파피플레... 21 잿더미어캣 22 2024.04.01
5215 [연재] 공포게임하는.manhwa 12 <파피플레이타임> 7 잿더미어캣 21 2024.03.25
5214 [연재] 공포게임하는.manhwa 11 <파피플레이타임> 4 잿더미어캣 17 2024.03.19
5213 [연재] 조조전 모드 - 유선전 플레이 일지 (29) 8 CopyPaper 14 2024.03.15
5212 [연재] 조조전 모드 - 유선전 플레이 일지 (28) 6 CopyPaper 6 2024.03.15
5211 [연재] 조조전 모드 - 유선전 플레이 일지 (27) 4 CopyPaper 5 2024.03.14
5210 [연재] 조조전 모드 - 유선전 플레이 일지 (26) 3 CopyPaper 5 2024.03.14
5209 [연재] 조조전 모드 - 유선전 플레이 일지 (25) 8 CopyPaper 6 2024.03.13
5208 [연재] 조조전 모드 - 유선전 플레이 일지 (24) 5 CopyPaper 5 2024.03.12
5207 [연재] 조조전 모드 - 유선전 플레이 일지 (23) 7 CopyPaper 5 2024.03.12
5206 [연재] 조조전 모드 - 유선전 플레이 일지 (22) 5 CopyPaper 5 2024.03.11
5205 [연재] 공포게임하는.manhwa 10 <파피플레이타임> 4 잿더미어캣 9 2024.03.11