작성자 | Guetelperr | ||
---|---|---|---|
작성일 | 2010-09-05 23:20:07 KST | 조회 | 7,247 |
첨부 |
|
||
제목 |
[중급] 행위자 - 행위자 이벤트의 이해 4강 (실전편)
|
휴.. 읽는 여러분도 힘드실 지 모르겠지만 저도 그냥 제가 아는것만 요리조리 만져서 맵을 만들다가 강의를 쓰려니 정확히 알지 못하던 것들이 많아 고전중입니다 ;ㅅ;.. 그래도 이제 절반을 넘었다는 것에 힘을 내서 우리나라 맵퍼들의 수준을 한단계 끌어올릴(꺼라고 혼자 믿고만 있는) 강의를 끝까지 써내도록 하겠습니다.
이번 실전편에서는 몇몇 행위자를 분석해볼텐데요, 그에따라 몇가지 행위자 유형을 배우게 될겁니다. 그러기에 앞서 우리는 또 한가지.. 배워야 할게 있는데요 그건 바로 자리연산!!입니다. 아.. 부착이라는 글자를 쳐다보는것 만으로도 머리가 지끈거립니다. ;ㅅ; 강좌를 쓰기위해 드론군과 얘기를 좀 나눠봤는데 드론군 역시 이쪽은 애매하다.. 그냥 내가 필요한걸 만드는것 정도만 할 수 있다..라고 하더군요. 그래서 저도 그냥.. 대충 날림 설명하겠습니다. ㄱ-
부착지점
우선은 부착지점을 알아야합니다. 이건 모델 미리보기창에서 알 수 있는데요, 렌더링->기하도형표시->부착지점에 체크해주시면 유닛이 가지고 있는 부착지점을 모두 보실 수 있습니다. 우측에서 부착지점을 선택하면 모델에 붙어있는 부착지점 아이콘이 약간 커지면서 강조되는데요 이게 잘 안보이면 컨트롤 우클릭으로 모델을 이리저리 돌려볼 수 있으니 정확한 위치를 알아내시기 바랍니다. 또, 부착지점은 지금 다 영어로 나와있는걸 알 수 있으실텐데요, 저게... 실제로 자리연산을 작성할때는 한글로..번역되 있기때문에 헷갈리시면 안됩니다. 뭐.. 사실 그렇게 어려운 단어는 없잖아요? 우선은 이정도만 알아보고 넘어갑시다.
본격적으로 지금까지 배운걸 써볼 차례입니다. 저는 암흑기사에게 점멸을 주고 그것을 꾸미는걸로 이번 강의를 이어가겠습니다. 다시 한 번 말씀드리겠지만 지금 저는 여러분이 데이터 이해등급 중급자에 가깝다고 생각하고 있기 때문에 어떻게 암흑기사에게 점멸을 넣는지에 대한 내용은 상세하게 다루지 않습니다. 강의 진행상 여러분도 제가 주문한대로 새로운 점멸 능력을 만들어서 넣어주세요. 어둠 점멸이라는 버튼을 만들고 DarkBlink라는 능력과 순간이동 효과를 통해 순간이동을 하도록 만듭시다. 능력에는 준비시간을 1초 주고 최적유닛 플래그를 제거합시다. 저는 더 멋진 암흑 기사를 만들기 위해서 암흑기사의 은폐됨 플래그도 제거했습니다. 능력을 부여했으면 점멸이 잘 작동하는지부터 확인해보세요.
만드신 능력이 잘 작동한다면, 이제 본격적으로 행위자를 만져봅시다. 우선 저는 암흑기사가 암흑기사 다울 수 있도록 색조 변경을 통해 어둡게 만들 예정입니다. 그러니 암흑 기사행위자의 이벤트를 찾아갑시다. 으잌.. 뭐가 너무 많습니다. 하지만 지금 이걸 다 이해하려고 노력할 필요는 없어요. 확인할 것은 제일 위쪽으로 가보시면 UnitBirth와 UnitConstruction, 그리고 Unit Revive의 이벤트가 Create행동과 연결되어있다는것만 확인하시면 됩니다. revive이벤트는 설명드리지 않은 거지만 현 시점에서는 현실적으로 여러분이 맵을 만드실 때 필요가 없을꺼라고 생각됩니다. 그럼 이제 행위자 이벤트중 가장 마지막 녀석을 보도록 합시다. 암흑기사는 변형모델이 두 가지가 있기 때문에 변형모델에 따른 소멸 사용자 지정이 설정되있군요. 무슨말인지 모르셔도 상관없습니다. 지금은 별로 알 필요가 없는 얘기니까요. 우클릭을 해서 이제 새로운 행위자 이벤트를 작성합시다. 이벤트는 행위자 생성, 행동은 색조변경. 색조색상은 완전히 검은색이 아닌 약간 짙은 회색정도로 골랐습니다. 그래야 망토 색깔이 약간이라도 구분 될테니까요. 본진에 암흑 기사가 하나 있긴한데 이게 내 유닛인지 남의 유닛인지 분간도 안되면 안되잖아요?
그리고 우리는 간지뽐뿌 암흑기사를 만들껀데 크기가 이렇게 작아버리면 좀 재미가 없습니다. 역시 행위자생성 이벤트에 배율설정 이벤트를 연결합시다. 저는 배율을 1.5배로 정했어요. 이에 따른 반경조절은... 저는 0.625정도면 적절한 것 같네요.광륜! 광륜도 배웠으니 빼먹을 수 없습니다. 마찬가지로 행위자 생성과 광륜시작을 이어줍시다.
자, 저는 이런 간지가 넘치는 암흑 기사가 완성됐습니다. 여러분도 저와 비슷하게 됐나요?
[그림 1]
그럼 우리가 만들어준 점멸에 멋진 모델을 연결해 봅시다. 우선 어떤식으로 보여줄지를 결정해야 될껍니다. 저는 점멸을 시전하면 준비시간동안 현재지점에 소환진이 생성되고 연기가 펑! 하고 터지면서 이동되도록 만들어보겠습니다. 이거 하나면 지금까지 배운걸 왠만큼 다 써먹을 수 있겠군요.
행위자 탭으로 가서 새로운 행위자를 만듭시다. 행위자 유형은 모델로 만들고, 기반은 모델 애니메이션 양식 연속으로 하시면 기본적인 행위자 이벤트를 채워줍니다. 저는 DarkBlinkPrep라는 이름으로 만들었습니다.
이제 어떤 모델을 연결할지를 선택해야 됩니다. 저는 지면에 나올 소환진으로 “프로토스 소환” 모델을 사용하겠습니다. 그.. 차원관문에서 유닛을 소환할 때 발밑에 뜨는 그 소환진 말이예요. 모델필드에 프로토스 소환모델을 이어줬다면 이제 이벤트로 들어갑시다. 회색으로 행위자 이벤트 세개가 설정되있는게 보이시죠? 이건 행위자가 생성되면 Birth - Stand - Death애니메이션을 차례로 재생하고 재생이 끝나면 행위자를 파괴해주며 아무 행위자 하고도 연결되지 않으면 애니메이션을 중지하자는 소립니다. 일단은 아래에 행위자 이벤트를 추가합시다. 어떤걸로 하면 적당할까요? 그렇죠, 앞에서 준비라는 타이밍을 잡을 수 있는건 능력 뿐이라고 말한적이 있습니다.
Abil.DarkBlink.SourcePrepStart 로 이벤트를 작성하시면 되겠습니다.
행동은 Create로 하시구요.
모델은 만들었다면 반드시 파괴해주셔야 하는데요, 준비가 끝나면 파괴를 하면 되겠죠?
Abil.DarkBlink.SourcePrepStop에 파괴(Destroy)를 연걸하시면 되겠습니다.
그런데 갑자기 뿅 하고 사라지면 좀 생뚱맞고 멋이 없지 않습니까! 그렇기 때문에, 우리는 여기서 타이머를 써볼 껍니다. 어디한번 모델이 정상적으로 나타나는지 보기로 합시다.
뭔가 잘 작동은...하는데..... 싶으실껍니다. 몇가지 문제점을 짚어보죠.
첫째, 소환진이 너무 과하게 큽니다.
둘째, 소환진이 나타나는 시간이 너무 길어서 매우 흐릿합니다.
첫 번째 문제부터 해결해봅시다. 배율을 조절하는건 위에서 한번 해봤죠? 그렇기 때문에 좀 색다른걸 해보겠습니다. 행위자 이벤트를 두 개 만들겠습니다.
첫 번째 행위자이벤트는 행위자생성->배율을 0.01로 설정입니다. 이 배율을 0으로 설정하면 “설정 안함”으로 인식되기 때문에 이처럼 0.01로 설정해주셔야 합니다.
그다음 행위자이벤트는 행위자생성->배율을 1초에 걸쳐 0.4로 설정입니다. 지금 제가 구현한 것은 소환진이 점점 커지고 나서 뿅! 하고 사라지는 겁니다.
둘째로 소환진이 나타나는 시간이 너무 길어서 매우 흐릿...하지요 ;ㅅ;.. 이건 기본값으로 만들어져 있던 이벤트를 조금 손보겠습니다. 첫 번째 행위자생성->애니메이션 묶음시작이라는 녀석이 있을텐데요, 이 녀석의 행동에 보면 매개변수로 열기항목에 생성이라는 애니메이션이 설정 되어있는게 보이실 겁니다. 주범은 이녀석이죠. 프로토스 소환모델의 birth애니메이션은 7초로 매우 깁니다. 이걸 birth 대신 stand로 바꾸겠습니다. 서기로 바꿔주시면 되는데요, 이게 애니메이션 이름을 한글화는 해놓고 정렬은 한글순으로 안되있어서 좀 찾기가 힘들 수 있습니다. 그나마 서기는 제일 위쪽에 있으니까 찾기 어렵지 않으실꺼예요.
이제 다시 실험을 해봅시다. 여전히 조금 아쉬운점이 있습니다. 소환진이 나타나는 것은 점점 커지는거라 좀 낫지만 사라질때는 너무 뜬금없이 사라지죠. 바로, 여기서 타이머를 써먹을껍니다.
자, 아까 Abil.DarkBlink.SourcePrepStop에 파괴라는 행동을 연결했는데요, 그걸 지우고 ModelDestroy라는 이름의 1초짜리 타이머를 만들겠습니다. 범위란 녀석은 기본은 1초고 최대 얼마나 더 오래걸릴 수 있느냐를 정해주는겁니다. 그러니까 약간의 랜덤성을 부여하는거죠. 저는 이걸 0.2초로 설정해보겠습니다.
행위자 이벤트를 하나 추가해서 이번에는 타이머 만료라는 이벤트에 TimerName이라는 조건, 그리고 파괴라는 행동을 연결하겠습니다. 조건에는 반드시 우리가 방금 정한 ModelDestroy라는 이름을 적어주셔야 합니다. 그런데 이렇게 해선 그냥 1초 있다 사라질뿐이지 생뚱맞은건 마찬가지일 것 같습니다. 그러므로, 행위자 이벤트를 하나 더 만들어서 Abil.DarkBlink.SourcePrepStop이벤트에 색조변경을 연결합시다. 완전한 흰색에 혼합시간은 1초로 설정한 후 hdr배수는 10정도로 잡겠습니다. 그런데 제 생각엔 그래도 조금 부족할 것 같기 때문에 불투명도와 배율도 건드려보겠습니다. 똑같이 Abil.DarkBlink.SourcePrepStop이벤트에 불투명도는 1초에 걸쳐 0.01로, 배율은 1초에 걸쳐 0.35로 줄어들도록 설정해봤습니다.
완성된 행위자 이벤트 목록은 [그림2]와 같습니다. Delete키는 안먹지만 컨트롤+c,v는 먹히니까 유용하게 사용하세요.
[그림2]
자 다시 실험을 해봅시다. 에... 그런데 또 문제가 발생했습니다. 소환진이 암흑기사를 따라다니네요. 하지만 이미 여러분은 이 문제를 해결하기 위한 방법을 배우셨습니다. 바로 자리연산!! 이러때 써먹으라고 배운거죠. 우리가 만든 DarkBlink 행위자의 필드를 죽- 내려보시면 호스트 어쩌고 자리가 어쩌고 하는 필드가 많이 있을겁니다. 바로 여기서 문제를 해결할 수 있습니다. “왜”는 묻지말아 주세요 ;ㅅ;... 저도 드론도 확실하게 뭐가 뭔지 잘 모르고 일단 쓰고있답니다. 호스트-주제는 별칭 항목의 _Selectable로, 호스트 자리연산 - 연산은 유닛원점 정지(SOpAttachOriginStationary)로 설정해주세요. 하나라도 잘못되면 정상적으로 모델이 나오지 않습니다.
자, 이제 점멸을 쓸 때 바닥에 소환진이 생기는걸 만드는데 성공했습니다 ^-^; 이번 예제는 일부러 과도할 정도로 복잡하고 완성도가 높게 만든 것이니까 여러분이 무언가를 만들때는 이만큼 손을 많이 안데셔도 괜찮습니다. 완성도와 자기가 버텨낼 수 있는 노가다량 사이에서 잘 타협하시기 바랍니다.
그러나!! 아직 안끝났습니다! 연기가 뿅! 하고 나타나게 할꺼라고 분명히 말씀드렸죠! DarkBlinkCloud라는 모델 행위자를 아까와 똑같이 만들겠습니다. 새로 만드시면 자리연산을 _Selectable과 원점정지로 다시 설정해주시는것도 까먹어선 안되겠습니다. 연기의 모델은 HallucinationCollosusBirth로 연결하고 이벤트에는 효과발동->행위자 생성을 만들어줘야겠죠? Effect.DarkBlink.Start라는 이벤트에 조건은 At 출처로, 행동은 만들기(Create)로 붙여주시면 완성! 실험해보시면 아마 소환진 위에 연기라 퐁- 하고 피어오를텐데 이게 약간 작은 것 같으니까 DarkBlinkCloud에 들어가서 배율을 좀 높입니다. 저는 1.5정도면 적절한 것 같네요. 여기서 잠깐. 연기의 색깔을 바꾸고 싶다? 그러면 DarkBlinkCloud행위자에서 색조변경을 해주시면 됩니다. 그런데... 안타깝게도 이 모델은 이전에 설명드린 검정을 투명으로 인식하는 모델입니다. 그런고로... 어둠 점멸 다운 검은 연기는 기대하기 힘들겠네요.. 그리고 사실 검은 연기로 하려면 제라툴 점멸모델을 쓰면 되는거잖아요? 우리는 그냥 이대로 갑시다.
(저는 그냥 모델이 처음부터 나오는 편이 더 자연스러운 것 같아서 함께 올려둔 예제맵에서는 DarkBlinkCloud행위자를 효과의 시작이 아닌 능력의 시작으로 타이밍을 바꿔놨습니다. 헷갈리지 않으시길 바래요.)
출발지점에만 연기가 피어오르면 역시 뭔가 부족합니다. 마르의 점멸이나 제라툴의 점멸처럼 연기를 헤치고 나타나는 효과도 주고 싶어요. 그럼 또 모델을 만들어야겠죠? 하지만 이번에는 부착연산을 지정하지 않아도 좋습니다. 왜냐하면 이전의 두 행위자는 유닛에 붙어있는걸 억지러 떼어내기 위함이었고, 지금은 그냥 유닛에 붙여주면 되기 때문이죠.
행위자 이름은 DarkBlinkCloud(end)로 정하고 연결할 모델은 HallucinationCollosusDeath로 하겠습니다. 그리고 Effect.DarkBlink.Start에 At출처와 만들기를 붙여줍시다. 그런게 실험을 해보시면 어...? 안나옵니다 ㅠ_ㅠ 왜죠? 모델 미리보기로 들어가보면 애니메이션이 Death하나밖에 없다는 사실을 알게 됩니다. 후.. 행위자 이놈은 뭐 하나도 그냥 넘어가는게 없군요. 기본적으로 작성되있던 행위자생성-애니메이션묶음 시작 이벤트에서 열기를 소멸로 바꾸고 내용과 닫기는 모두 없음으로 설정해주면 됩니다. 배율은 미리 한 1.3정도로 바꿔둡시다.
자!! 이제 실험을 해보면 오 하느님아버지알라신부처시여 이걸 정녕 내가 만들었단 말입니까! 간지가 포풍처럼 밀려오려고는 하는데 뭔가 좀 아쉽습니다. 시각적으로는 굉장히 즐거운데 귀가 허전하죠. 그럼 소리 행위자도 한번 만들어봐야겠네요. 이쪽도 좋은 소리를 찾아내기는 힘들지만 행위자를 만드는 그 자체는 어렵지 않습니다. 저는 DarkBlinkPrepSound와 DarkBlinkSound라는 이름으로 소리 반복 없음 기반의 소리 행위자를 두 개 만들었습니다. 준비할땐 좀 기모으는 소리가 나면 좋잖아요? 헤헤..
DarkBlinkSound의 소리는 Protoss_ShieldHit으로 하고 DarkBlinkPrepSound의 소리는 Sentry_GuardianShieldLoop0으로 하되, 소리를 새로 만들어서 연결하겠습니다. 방금 만든 행위자 이름이랑 같은 녀석으로 말이죠. 기반은 둘다 Spell로 만들어 주시면 됩니다. 소리자산을 더블 클릭한 후 나오는 흰 창에 우클릭으로 추가를 누르시면 원하는 소리를 추가하실 수 있습니다. 그리고 제가 이걸 따로 만들라고 말씀드린 결정적인 이유.. 스피커 혼합 필드의 모든 값을 올려서 소리를 키워주기 위함입니다. 이게 왜 중요하냐..하면 나중에 좀 더 복잡한 맵을 만들 때 저런 소리들이 얼마든지 원래의 용도로 쓰일 수도 있는데 그렇게 되면 볼륨을 조절해 버리면 문제가 될 수도 있기 때문입니다. 준비소리는 5로 맞췄고 점멸시 나는 소리는 0.2로 낮췄습니다. 또, 준비소리는 10초짜리 자산으로 매우 길기 때문에 효과가 발생한뒤 0.5초후에 파괴되도록 이벤트를 짰습니다. 이제 상세하게 설명드리지 않아도 위에서 해본 것을 토대로 잘 할 수 있으시겠죠?
일단 이 소리가 제 마음에도 썩 들지는 않는데요.. 강의적다가 도저히 더 좋은 소리를 찾는건 지쳐서 못하겠나이다 ㄱ-..
여러분은 예제맵에서보다 더 잘 어울리는 소리를 찾아보도록 하세요!!
아래는 완성된 어둠 점멸의 동영상입니다. 제 개인적인 생각으로는 역시 공을 들인만큼 마르의 점멸보다 더 멋진것같네요!
자! 이번시간에 우리는 동작 이벤트를 제외한 모든 이벤트와 유효성 검사를 제외한 제가 가르쳐 드린 모든 조건, 그리고 반짝임을 제외한 모든 행동을 직접 활용해 봤습니다. 덕분에 강의가 무척 길어졌군요! 하지만 여러분도 저와 함께 이런 멋진 이펙트를 만들어 봤고, 앞으로는 여러분 혼자서도 이런 정도의 작업은 충분히 하실 수 있을꺼라고 생각됩니다. 다음 강의 응용편에서는 좀 더 게임의 근간이 되는 행위자의 깊은곳으로 들어가도록 하겠습니다.
덧> 우리는 처음 암흑 기사의 덩치를 키웠는데 상태 표시줄의 위치가 조금 마음에 안드는분이 있을지도 모른다는 생각에 설명을 덧붙입니다. 유닛 행위자에 보면 표시줄 오프셋이라는 필드가 있는데, 이녀석을 50에서 70정도로 올려주시면 좀 더 자연스럽습니다 :)
덧2> 기존 강의에서 부착지점과 부착연산, 자리연산을 제대로 구분하지 않고 사용한점을 수정했습니다. 부착 지점은 모델이 가지고 있는 고유의 지점이고 부착 연산은 해당 부착지점들 중 조건에 따라 특정한 부착 지점을 출력하는 연산이며 자리 연산은 행위자로써, 부착 지점을 이용해 대상(호스트)의 3차원 내의 어떤 상대적 위치를 출력하는 연산을 의미합니다.
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
© PlayXP Inc. All Rights Reserved.