와아....

error CS0120이라는 오류가 나타났습니다.

한동안 실습은 아마 이거 해결만 노력을 해야 할 것 같아요!

그래서 저는!

오류 해설을 보려고 왔습니다.

저에게 알려주고 있는 사람이 없기 때문에 아마도.... 하하??

뭐... 제가 꿈의 대학을 가게 된다면?? 아마도 해결이 가능 할 지도?? 적어도 물어볼 수 있는 사람이 한명이라도 생기는 거잖아요!

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

APOCALIPA CITY를 이번에 기획을 하게 되었습니다.

물론 친구들이랑 미소녀 연애 시뮬레이터 (이하 미연시)를 만들겠다고 하였는데

미연시 제작에 참여하는 친구들의 자유의사를 너무 존중을 하다가 흐음.... 무기한 연기가 되었다고 봐도 될 정도가 되었습니다.


그리고 제가 Civil War때도 그랬듯이 이상하게 아포칼립스 장르가 만들기 편할지도 모르겠다는 생각을 하였습니다.

이상하죠??

아무튼 저는 혼자서 레벨 디자인을 마치고 게임 제작을 시작하여 간단하게 알파 테스트 버전 또는 베타 테스트 버전까지 만들까합니다.

이것을 제작하기로 결심한 이유는 제가 Civil War를 혼자 힘으로 제작을 하였듯이 이번 APOCALIPA CITY도 혼자의 힘으로 제작을 하여

학교에 당당히 선생님들에게 보여줄까?? 생각을 하게 되었습니다.


물론 좀비라는 선호받지 못하는 또 슈팅이라는 교육의 의미로 더더욱 선호 받지 못하는 장르이기는 하지만 저는 레벨 디자인과 개발 과정들을 여러 방법으로 이 블로그에 게시를 하려고 생각을 하고 있습니다.


그리고 최종 완성본은 아마 대학교에 간다면 아니면 고등학교를 졸업하게 된다면 제작을 하게 되지 않을까 조심스럽게 생각을 합니다.


일단 이런 느낌의 초기 컨셉을 잡아볼까 생각중 입니다.

(http://kilo-staticgames-85326.tistory.com/entry/추가-저작권-링크?category=728712)

저작권은 기재가 되어 있는 게시글로 연결을 해두겠습니다.


아무튼 초기 컨셉을 그냥 저렇게 잡았습니다.


이번 것은 친구에게 돈좀 주고 아트좀 그려달라고 해야할 것 같네욬ㅋㅋㅋ

블로그 슬라이드에 게시를 하려면

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

캐릭터 애니메이션의 내용은 이렇습니다.

- 대기, 이동, 공격, 쓰러지는 연출

- 대기 중, 이동 중, 공격 중이라도 생명이 0이라면 쓰러집니다.

- 공격 중엔 검을 휘두르고 있을 때만 적과 무기 타격 판정이 유효합니다.


Unity엔 인간형 모델을 Humanoid라고 합니다.

캐릭터는 인간형이기에 앞서 설명한 것처럼 이 모델에 애니메이션 대상 변경 기능을 사용할 수 있습니다.


Project란에 미리 임포트를 시켜 놓은 모델 데이터를 선택합니다.

하지만 저는 제가 독학을 하고 있는 책자에서 샘플을 제공하여 주었습니다.

그러고 나면 Inspector에 'Player Import Settings'라는 것이 표시 됩니다.

그때 Rig라는 것을 누른 후에 인간형이라면 Animation Type을 Humanoid로 설정합니다.

Apply를 눌러 설정을 저장을 한다면 아래와 같이 체크 표시가 생길 겁니다.

그러면 이제 Animation Type에 Humanoid말고 다른 것은 무엇이 존재 하는지 그것을 알아보겠습니다.

- None : 애니메이션을 사용하지 않는 모델

- Generic : Humanoid가 적용되지 않는 모델

ex) 케르베로스, 드래곤

- Legacy : Unity 3.x 이전 버전의 애니메이션 시스템과 호환을 위한 설정

- Humanoid : 인간형 모델

ex) 오우거, 엘프, 인간

---------------------------------------------------------------

애니메이션 데이터를 설정할 차례입니다.

이번 게시글은 꽤 길게 진행할 생각입니다!!!


그럼 다시 본론으로 돌아와서

아까도 말을 하였듯이 제가 유니티 3D를 배울 때 사용하는 책자에서는 저에게 모션을 제공해 주었습니다.

대기 모션 / 이동 모션 / 공격 모션 / 쓰러지는 모션을 제공 받았습니다 (원래는 책사면 줍니다.....)

그럼 다시 설명을 하겠습니다.

일단 Project에 미리 임포트한 애니메이션 데이터를 선택합니다.

그러면 Inspector에 Player Import Settings가 다시 표시가 됩니다.

그리고 이번에도 Rig를 눌러서 Rig화면으로 변경 해줍니다.

그리고 Animation Type을 Humanoid로 설정합니다.

다시 Apply버튼을 눌러줍니다.


그리고 이 작업을 모든 인간형 모델의 애니메이션 데이터에 설정합니다.

---------------------------------------------------------------

이제는 앞서서 임포트한 애니메이션 데이터를 유니티에서 이용하기 위해 애니메이션 클립 파일로 만들어야 한답니다.

(먼데 이리 귀찮은데??)혼자 만들면 해야할게 너무 많잖아

Animation Clip(애니메이션 클립)은 임포트한 애니메이션 데이터에서 실제로 이용할 데이터만 뽑아서 유니티에서 사용하기 쉽게 조정한 데이터를 말합니다.


그럼 이제 본방입니다.

Project 브라우저에서 애니메이션 데이터를 하나 선택하고 나서 Inspector의 Animations 탭을 클릭합니다.

그럼 애니메이션 클립 설정화면이 나타납니다.

Clips에선 애니메이션 데이터를 추출하는 시간을 조절합니다.

그리고 FBX 애니메이션 데이터 하나에 애니메이션 여러 개를 모았다가 유니티에서 나누는 것도 됩니다. (이거는 솔직히 독학이라.... 책에는 쓰여 있는데 중요해 보이고 설명은 어렵고...???)

나머지는 뭐.... 애니메이션 클립의 재생 설정부분 입니다.


위 사진을 가지고 설명을 이어가겠습니다.

Loop Time : 이 속성에 체크하면 애니메이션이 반복 재생 됩니다.

- Loop Pose : 체크시 애니메이션 시작과 끝이 매끄럽습니다.


Root Transform Rotation

- Bake Into Pose : 체크하면 루트 오브젝트의 Transform -> Rotation에 애니메이션 값을 대입하지 않습니다. 회전 제어시 사용합니다.

- Based Upon : 회전의 루트 위치를 설정합니다.

- Original : 애니메이션 데이터를 따릅니다.

- Body Orientation : 상반신 전방을 루트의 Transform에서 Rotation으로 맞춥니다.

- Offset : 회전의 보정값을 설정할 수 있습니다.


Root Transform Position (Y)

- Bake Into Pose : 체크시 루트 오브젝트의 Transform -> Position -> Y에 애니메이션 값을 대입하지 않습니다. 캐릭터의 점프등을 관리할 때 사용합니다.

- Based Upon (at Start) : 수직 방향의 기준이 되는 것을 설정합니다.

- Original : 애니메이션 데이터를 따릅니다.

- Center of Mass : 오브젝트 중심을 루트의 Position -> Y에 맞춥니다.

- Feet : 발 위치에 맞춥니다.

- Offset : Position -> Y의 보정값을 설정할 수 있습니다.


Root Transform Position (XZ)

- Bake Into Pose : 체크시에 루트 오브젝트의 Transform -> Position -> XZ에 애니메이션 값을 대입하지 않습니다. 스크립트 쪽에서 오브젝트의 수평 위치를 제어할 때 이용합니다.

- Based Upon (at Start) : 수평 방향의 기준이 되는 것을 설정합니다.

- Original : 애니메이션 데이터를 따릅니다.

- Center of Mass : 오브젝트 중심을 루트의 Position -> XZ에 맞춥니다.


loop match 아이콘 : 속성 별 loop match 아이콘이 있습니다. 이 아이콘은 애니메이션의 시작과 끝을 연결했을 때 깔끔하게 재생되는지 나타냅니다. 아이콘이 초록이라면 문제가 없습니다. ( 색상 초록 -> 노랑 -> 빨강 이것은 시작과 끝의 포즈가 다른 정도)


Mirror : 애니메이션을 좌우 반전시킬 수 있습니다. 현재 설정값에 따라 어떻게 재생되는진 Inspector 맨 아래에 있는 [Preview]에서 확인할 수 있습니다. [재생] 버튼을 누르거나 타임라인을 조작해 Inspector만으로도 애니메이션을 확인할 수 있습니다. [Preview]오른쪽 위에 있는 슬라이더로 애니메이션 재생 속도를 조절합니다.

그러면 오늘 저는 이만 들어가보도록 하겠습니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

Mecanim(메카님)이란 유니티 4에서 추가가 된 새로운 애니메이션 시스템을 말한다고 합니다.

대표적인 기능으로는 Retargeting(애니메이션 대상 변경) / State Machines(상태 머신)

이렇게 존재합니다.


---------------------------------------------------------------


애니메이션 대상 변경이라는 것은 다양한 3D 모델에서 같은 애니메이션 데이터를 사용할 수 있게하는 기능입니다.

휴머노이드라는 것에 이 기능을 사용할 수 있다고 합니다.

예를 들어 8등신 3D 캐릭터용을 만든 것은 2등신에서도 적용이 된다고 하니 얼마나 편한 것인지를 모르겠네요


---------------------------------------------------------------


상태 머신이라는 것은 애니메이션의 상태 전환을 유니티에서 편집할 수 있는 기능입니다.

애니메이션간 전환 조건 / 블랜딩 설정 등을 시각적으로 확인이 가능합니다.

유니티 실행중에 애니메이션 전환을 디버깅할 수 있는 기능도 지원합니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

Warg모델을 화면으로 드래그를 하여 불러옵니다.

위치는 상관 없습니다. 잘 보이기만 하면 됩니다.


캐릭터와 같이 Warg에도 컴포넌트와 스크립트를 추가 합니다.

먼저 Character Controller를 위와 같이 셋팅하여 설정을 합니다.

그리고는 Character Move와 Character Status를 불러와서 다음과 같이 설정을 합니다.


그렇게 늑대를 프리팹화 합니다.


잊지말고 드래곤도 프리팹화를 하기 위한 셋팅을 합니다.

위와 같은 셋팅이 완료가 된다면 늑대하고 드래곤을 프리팹화 합니다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

프리펩이라는 것이 무엇인지를 먼저 생각을 해야 한다고 생각을 합니다.

제가 책을 보고 생각한 프리팹은 기본 셋팅이라는 것입니다.

기본값을 설정을 하는 것입니다.

그리고 모든 복제된 변형된 모든 오브젝트는 프리팹을 통한 기본 세팅을 진행을 합니다.

이렇게 Assets에 Prefabs라는 폴더를 생성합니다.

그리고 Hierarchy에 있는 캐릭터를 프리팹에 옮깁니다.

그리고 프리팹을 화면으로 옮겨서 꺼낸 후에 잘 되었는지 확인을 합니다.^^

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,
제 생각을 마지막으로 정리를 조금 하겠습니다.

제가 훈련이라고 주장을 한 것은 결론적으로 경험에서 오는 것입니다.

그렇기에 저는 다른 방법이라도 좋으니 경험을 쌓아야 한다고 생각을 합니다.


그래서 이번 동아리 시간에 제가 부원들에게 말한 사항은

1. 너희들이 평소에 좋아하던 것을 찾아라!

2. 그것을 어떻게 하면 만들어내고 효과적으로 접근이 가능한가?

3. 평소와는 다른 시각으로 접근해라!

한 시간정도 넘게 떠들은 기억이 있습니다만(?)

그 동안 저는 저 3줄로 요약이 가능한 이야기를 했습니다.


그래서 저는 이렇게 말을 합니다.

경험을 바탕으로 다른 사람과는 다른 방식으로 새롭게 접근하는 것이야 말로 창의력의 근본이라고

아무튼!

저는 그런 방식을 좋아하고 평소에도 최근에는 많이 줄었지만 시간이 날때마다 해보고 있습니다.

꿀팁을 전수하자면 이미 생각했던 그리고 그 생각에서 이미 접근한 방식은 다시는 시도 하지 않을 것!



해당 카테고리의 다음 게시글은 게임 프로그래머가 보는 게임의 장단점

'게임은 좋은 것이다? vs 게임은 나쁜 것이다?'를 하도록 하겠습니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

앞서 설명한 두 가지의 문제점을 삼은 저는 일단 첫째는 저의 문제이기에 발전되어서 후배들을 다시 찾아가는....? 그런것을 하도록 할 것이구요

둘째는 창의력에 관한 간단한 어떻게 보면 간단하지 않은 고찰을 하려고 합니다.


먼저 그러면 창의력이란 무엇인가? 를 생각해야합니다.

창의력을 하면 무엇인가 새로운 아이디어로 만들어 내는 것을 먼저 떠올립니다. 

그리고 네X버 사전의 의미로는 이렇게 나옵니다.


그럼 대체 이 창의력이라는 것이 얼마나 중요한 것이기에 이 프로그래밍 블로그에서 따로 카테고리를 처음 파낼 정도로 중요한 것이냐??

저는 중요하다고 생각을 합니다.

코드의 작성도 결국에는 새로운 것을 생각해서 작성을 해야하고 저 같은 경우에도 게임에 참신하며 익숙하게 창의력을 사용하여 만들어야 하기 때문에 중요하다고 생각할 수 있겠네요


지금까지 창의력은 중요하였고 지금도 중요하며 앞으로도 중요할 예정이니깐요


그러면 이제 제가 생각하는 창의력에 관하여 설명을 하도록 하겠습니다.

먼저 창의력이란 2가지 종류가 있다고 생각을 합니다.


그것은 저 사전적 의미에서 나온 유의어 2개가 저의 생각과 딱 맞을 지도 모릅니다.


1 : 무에서 유를 창조하는 창의력

2 : 기존의 것을 조금 더 발전 시키는 창의력


이렇게 있겠네요

무에서 유를 창조하는 창의력과 같은 경우에는 요즘은 너무 많은 정보가 흘러 나오다 보니 정보의 단순화가 이루어 지고 있다고 생각을 합니다.


너무 많은 정보가 오히려 복제를 일으켜서 비슷해 진다는 의미입니다.

그렇다 보니 무에서 유보다는 환경적인 이유로 대부분은 비슷한 생각을 하게 된다는 것이지요

그렇게 된다면 아마 1번과 2번을 나눈 의미가 사라지지 않을까하고.....


일단 저는 저런 창의력이 있다고 생각을 합니다.

그러면 알아 내었으니 저것을 강화하는 훈련(?)을 해야 합니다.

그래서 저는 이 유머사진을 비꼬았습니다.


미대생이 보는 세상이라는 이름으로 올라온 사진인데

이것이 왜?? 라고 생각하는 사람이 있을 것 입니다.

자 이것이 왜?? 창의력일까요?? 표현력을 잘못 말을 한 것은 아닐까요??


실제로 저는 이것이 매우 관련이 깊다고 생각을 합니다.

저 말은 무슨 이야기냐면 아이디어를 얻기 위해 자신의 전공으로 바라보는 세상이라는 소리입니다.

실제로 누구나 저렇게 생각하지는 않을지는 몰라도 솔직히 제가 프로그래밍 응용력을 올리는 방법으로는 좀 많이 도움이 되기는 하였다고 생각을 합니다.

프로그래밍 처음 시작할 무렵에는 어떻게 해야할지 막막하고 그랬습니다.

혼자서 하는 것은 어려운 일인가하고 진지하게 학원도 생각을 했지만

그때까지만 하더라도 수원에는 그런 학원이 존재하지는 않았습니다.

대한민국 정부에서 중요시 여기는 주입식 교육을 가르치는 학원이나 미술 / 음악학원은 있었어도 이런 학원은 제가 못 찾은 탓인지 없다고 판단이 되더군요

그래서 책사서 혼자 시작했습니다.

그리고는 그것을 응용하기 위해 세상을 제가 보는 세상을 프로그래밍을 하였습니다.

덕분에 지금은 아이디어가 넘치고

덕분에 지금은 이해(하고 습득)하는 것이 엄청 뛰어난 것은 아니어도 어느 정도 꽤 잘된다고 생각을 합니다.


물론 아이디어도 세상보는 것에 전공(?)을 접목 시켰듯이 전공(?)관련해서만 아이디어가 좀 더뛰어나다라고 말을 할 수 있습니다.

그리고 이러한 방법으로 같은 것을 보더라도 다양한 것을 보게 되는 것이었습니다.

한마디로 제가 사용한 방법이 더 다양한 시각을 제공하고 아이디어와 습득력에 도움이 된다는 것입니다.

실제로 생각정리하고 시간때우기도 좋구요....(?)

아무튼 그렇게 실력을 올렸다고도 생각을 합니다.

결론은 제가 동아리 활동이 끝이 난다면 내도록 하겠습니다.


만약 다음에 토크를 하게 된다면 '게임은 좋은 것이다? vs 게임은 나쁜 것이다?'로 하도록 하겠습니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

제가 컴파일러라는 자율동아리를 제 고등학교에서 운영을 하고 있습니다.

부장으로서 말이죠


학교 축제도 있고 해서 축제에 부원들이 프로그램을 만들어서 그 프로그램들은 전시하자하고 기획을 하고 프로그램 제작하는 시간을 가지며 부원들이 제작 하는 모습을 보았는데


제가 생각하기에 처음 배우는 부원들은 이미 배웠었던 부원들의 도움을 받아도 무언가 부족하다고 생각을 했습니다.


물론 제가 처음 접한 사람에게 무리하여 요구를 하는 경향이 모르는 사람이 보기에는 있을 수도 있다고 생각을 합니다.


그런데 제가 시작 전에 이야기를 한 것이 있습니다.

너희들의 실력에 맞게 기획을 하자라고 말이죠


물론 부원들은 그렇게 기획을 하였으리라고 믿습니다.

하지만, 실제로는 그렇게 간단하지 않았다고 판단을 한 모양인지 언제 저하고 만났을 무렵에 이런 소리를 하더군요


" 기획을 처음부터 해야할 것 같은 상황이 왔습니다. "


저는 여기 문제점을 두 가지라고 판단을 하였습니다.


첫째, 적은 정보력

-저희 자율동아리는 제가 일단 주도를 하고 있습니다. 작년에는 부장 형이 기획을 하고 주도를 하였듯이 그렇게 주도를 하고 있습니다. 그렇다 보니 저는 독학으로 프로그래밍을 배웠고 그렇다보니 많이 부족하거나 가르치는 것에서는 많은 무리가 있습니다. 정확한 정보도 아니고 (실제로도 블로그에서 이 말은 첫 단계로 깔고 시작하는 경우도 종종 있었죠??) 그러다보니 문제가 있는 겁니다.

둘째, 교육받지 못한 창의력

-저는 여기서 창의력에도 문제가 있다고 판단을 합니다. 저는 가르칠 때 이것은 이런상황에서 사용을 하는 것이야! 라고 말을 하지 않습니다. 이것은 이러한 역할을 사용하는데 라고 말한 후에 스스로 사용하는 방법을 만들어 보라고 사용해 보라고 주장을 하죠. 그렇게 창의력을 요구를 했습니다. 어떻게 보면 이것은 표현력이라고 할 수도 있겠네요


이러한 두 가지의 문제점을 바탕으로 저는 이러한 생각을 했습니다.

2학기 처음으로 시작하는 동아리 시간에는 창의력에 관하여 이야기를 하자고


그래서 이 이야기는 학교에서 뿐만 아니라 제가 생각하는 창의력과 그것을 키우기 위한 방법을 논하려고 합니다.

이 블로그에서 말이죠

그래서 제가 이렇게 새로운 카테고리도.....읍읍


아무튼간에 이제 본론으로 넘어가려고 합니다.

서론이 많이 길어졌네요

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

나중에 구현할 공격과 에니메이션에 대비를 하여 Player와 적의 체력등등의 정보를 저장하는 CharacterStatus 스크립트를 작성하여 캐릭터와 적에게 적용을 합니다.

마찬가지로 Assets에 있는 Scripts폴더에 새로이 하나 CharacterStatus를 생성합니다.

using UnityEngine;
using System.Collections;

public class CharacterStatus : MonoBehaviour {
    public int HP = 100;
    public int MaxHP = 100;

    public int Power = 10;

    public GameObject lastAttackTarget = null;

    public string characterName = "Player";

    public bool attacking = false;
    public bool died = false;
}

변수만 존재하는 간단한 스크립트입니다.

나중에 필요한 변수도 미리 정의를 했으니 그 점을 알아 주시기를 바랍니다.

그럼 간단하게 변수 이름을 알려줘야 겠죠??

 HP 

 체력

 Max HP

 최대 체력

 lastAttackTarget

 마지막에 공격한 적

 characterName

 캐릭터 이름

 attacking

 공격 중임을 나타내는 플래그

 died

 사망을 나타내는 플래그

 Power

 공격력

CharacterStatus 클래스의 변수

그리고 캐릭터에 추가하면 끝입니다!!!


그럼 이만!

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,