playXP

서브 메뉴

Page. 4 / 246 [내 메뉴에 추가]
글쓰기
작성자 민승이
작성일 2020-11-15 02:54:52 KST 조회 1,478
제목
시체가 영구히 남게하는법 질문요.

시체랑 잔해를 맵에 지속되게 남게하는 법을 찾았더니 타이머 행위자를 건드리라고 해서 하고 있는데 도통 이해가 안가네요. 어떻게 해야 하는건가요?

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
Cerenas (2020-11-16 04:28:19 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
단순히 그래픽적으로 시체만 남으면 되는 것입니까?
(예시-군단의 심장 원시 우두머리들,공허의 유산 메가리스,AI감시자)

아니면 워크래프트 3 마냥 부활 시킬 수 있는 '시체 유닛'이 필요하신 겁니까?

그것도 아니면 협동전 스완의 '고장난 토르','고장난 공성 전차' 처럼 유닛 그 자체로 남아있는 게 필요하신 겁니까?


그리고 용도에 따라 전혀 다른 방식으로 구현해야 할 텐데, 정확히 어떻게 작동하는 걸 원하시나요?
질문의 범위가 너무 넓어요.


좀 더 자세한 내용이 필요합니다.


타이머 행위자를 건드리라는 건 결국 '죽음 모델 행위자'를 수정해서 '소멸(Death)' 애니메이션을 중간에 멈추게 하는 용도로 쓰라는 답변 같습니다.
민승이 (2020-11-18 20:11:52 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
아 그런가요? 그렇게 넓은 범위가 있을 줄은 몰랐습니다. 제가 원하는건 그냥 그래픽만 남으면 되는 겁니다. 답변해 주셔서 감사합니다.
Cerenas (2020-11-19 10:13:49 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
단순히 그래픽만 남기면 된다고 하시니, 그럼 현재 그게 구현되어 있는 유닛들을 살펴봅시다.

일단 게임 상에서 야그드라를 죽여 봅시다.


1.
파일포켓 이미지
죽인 시간 0:58초
남아 있는 시간 28:01초
28분이 지나도 이상없이 남아 있는 걸 보니 시체가 영구히 남아 있다는 건 확인 할 수 있겠지요

그럼 이 유닛은, 어떤 애니메이션이 있는지 한번 봅시다.


2
파일포켓 이미지
야그드라의 소멸 유닛은 Death라는 애니메이션과 Dead라는 애니메이션이 있군요.
이중에 Death는 우리가 알고 있는 죽을때 꾸에에엑~~~하면서 머리가 터지고 앞으로 꼬꾸라지는 애니메이션이고 '반복: 거짓'이라고 되어 있으니 기본적으로 한번만 재생되는 애니메이션임을 알 수 있습니다.
그러면 Dead는 무엇인가? Death의 마지막, 꼬꾸라진 후의 모습인데 그 상태로 움직이지 않는 애니메이션입니다. 이게 '반복:참'이라고 되어 있으니 기본적으로 이 애니메이션은 끝나면 다시 반복될 수 있는 애니메이션이라는 걸 알 수 있습니다.
(이러한 반복 애니메이션에는 '걷기'와 '서기' 등이 존재합니다.)


자, 그러면 야그드라의 행위자로 가봅시다.


3
파일포켓 이미지
야그드라가 죽었을때 사용되는 행위자는 UnitDeathModelYagdra 라고 적혀 있네요. 한번 열어보죠.


4
파일포켓 이미지
응?근데 사실, 다른건 볼 필요가 없이 이벤트만 보면 됩니다. 그런데 이벤트가 죄다 회색이네요?
그렇다는건 이 '유닛 소멸 모델 야그드라' 행위자의 이벤트는 부모 행위자와 차이가 없다는 걸 알 수 있군요.


5
파일포켓 이미지
이걸 보니 그냥 '유닛 소멸 모델'이 그 부모 행위자입니다. 그럼 그 부모 행위자로 가보죠

6
파일포켓 이미지
그래서 열어보니 '유닛 소멸 모델'은 모델 기본 행위자를 부모로 가지고 있습니다. 그렇다면 더 위로는 볼 필요 없겠네요.
이 '유닛 소멸 모델'의 행위자의 이벤트들을 뜯어봅시다.

7
파일포켓 이미지
많이 간단하군요.근데....어라? 유닛의 소멸 애니메이션 관련이 아무것도 없네요? 이게 어떻게 된 일 일까요?



페이크다 이 BS들아!!!!!!!!!!!

8
파일포켓 이미지
는 사실, 소멸 모델의 애니메이션은 바로 이 'DeadAnimationMacro'(한글판, 죽음 애니메이션 매크로)매크로를 통해 재생되기 때문입니다.
그럼 이것도 열어보죠!

9
파일포켓 이미지
더 간단합니다.하나 하나 보죠

AnimDone(애니메이션이 끝났다!)
AnimName Death (애니메이션 이름이 Death인 경우!)
AnimPlay Dead Dead PlayForever (애니메이션을 재생하라! 그 애니메이션의 이름은 Dead 이며, 실제로 모델에서 재생해야 할 애니메이션은 Dead다!무한 반복 재생하라!)


....첫줄부터 답이 나왔네요? 유닛이 죽으면 유닛의 행위자에 지정된 소멸 모델을 불러와서 Death 애니메이션을 재생하고 Deadth가 끝났을때 Dead가 있다면 무한 반복 재생하라.

그런데.....문제는.... 저 Dead 애니메이션이 모델 자체에 있으면 문제가 없는데, 대부분의 스타 2 소멸 모델은 게임상에서 지워지기 위해서 저런 영구히 남는 모델이 없습니다. 대부분 Death 애니메이션내에서 사라집니다.

그래서 3번째 이벤트를 보면
AnimDone.*.Missing(애니메이션이 끝났다. 그런데 없다(Missing)!?)
AnimName Dead (애니메이션 이름이 Dead인거!)
PhysicsTerminate(물리 종료시켜라.물리엔진 이야기 입니다.)
라고 되어 있지요. 그리고 이어서 4번째는 이벤트와 조건은 같고 행동만
Destro(파괴)
라고 되어 있네요.

이건 이러한 내용입니다.처음 이벤트를 통해 Death 애니메이션의 재생이 끝나면 Dead 애니메이션을 재생해야하는데, 모델에 Dead 애니메이션이 없으면? Dead라는 이름으로 0초짜리 Dead 애니메이션을 재생,그냥 시작과 동시에 끝나는 겁니다. 모델에 Dead라는 애니메이션이 없으니까요. 그러면? 그대로 3,4번으로 이어지죠. 애니메이션이 끝난겁니다. Dead라는 이름의 애니메이션이요.그러면 물리로 종료시키고 이 행위자도 파괴해서 게임상에서 제거하는 거죠.

(여기 부분을 잘 이해하셔야 합니다. 행위자에서 지정하는 이름인 'Dead'와 모델이 가지고 있는 애니메이션 'Dead'는 다른 존재입니다.)



10
파일포켓 이미지
해병의 소멸 모델입니다. Death가 잔뜩 있긴해도 Dead가 없어요. 그래서...

11
파일포켓 이미지
해병이 죽으면 Death 애니메이션이 재생됩니다. 그리고 Dead가 없어서 그냥 위에 설명한대로 이 모델은 결국 제거 됩니다. 행위자도 함께요.

그럼 이 해병의 시체가 남으려면 어떻게 해야 할까요? DeadAnimationMacro 자체를 건드리면 이 행위자는 모든 유닛들이 공통으로 사용하고 있기에 너무 많은 유닛에게 영향을 끼칠 수 있습니다.



그러니 해병만 가지고 구현해 보도록 합시다.





---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
여기부터 저 아래까지는 구현에 실패한 구간입니다.행위자 분석 자료로 삭제하지 않고 남겨둡니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

그런데 아시나요? 해병 행위자에게는 특별한 기능이 하나 있습니다. 바로 전투 방패 애니메이션이죠.

12
파일포켓 이미지
UnitDeath.Marine (유닛이 죽었습니다.Marine이죠)
AnimPlaying Cover (애니메이션 Cover가 재생중이라면)
AnimPlay Cover Cover PlayForever 0.0000000 (애니메이션을 재생하세요. 이름은 Cover이구요 모델에서 재생해야 할 애니메이션 이름(속성)은 Cover예요. 재생 무한 반복할거고요 혼합 도입은 0초로. 아 그리고 대상은 _DeathModel입니다.

이걸 분석하자면요
해병이 죽었을때 Cover 애니메이션이 재생 상태인 경우, _DeathModel이라는 별칭을 가진 행위자에게 Cover 애니메이션을 재생하라는 거죠. 그럼 Cover 애니메션이 뭐냐?

13
파일포켓 이미지
이겁니다. 기본적으로 해병의 모델은 전투 방패를 장착한 상태로 만들어져 있습니다. 그리고 Cover라는 전역 애니메이션을 재생하면 그 방패를 숨기게 됩니다.

그러니까 저말은 전투 방패를 숨긴채로 해병이 죽으면 해병의 Death 모델도 전투 방패 숨긴채 재생하라는 의미가 되지요.

근데요, 중요한 건 전투 방패가 아닙니다. 중요한건 행위자를 통해 '소멸 모델'에 간섭할 수 있다는 증거지요.

한번 시도해볼까요?
간단하게, 유닛이 죽으면 모델의 배율을 4.0으로 뻥튀기 시켜보겠습니다.



14
파일포켓 이미지
실제로 해보면 이렇게 됩니다. 이로써 소멸 모델에 행위자를 통해 간섭이 가능하다는 것을 확인했으니 애니메이션도 간섭이 가능하지 않을까요?
간단합니다.

일단 애니메이션을 '멈추는'걸 해보도록하죠



15
파일포켓 이미지
방식은 똑같죠 유닛이 죽으면 애니메이션을 멈춰라!!! 그래서 이걸 실제로 해보면!

16
파일포켓 이미지
네. 정말로 멈춥니다. 애니메이션 Death의 시작과 동시에 말이죠.
(게임의 시간이 그 증거입니다.)

근데, 이런걸 원하신건 아니잖아요? 우리는 Death애니메이션이 재생되고나서 적절한 시점에 멈추기를 바랍니다. 그러니까 컷신 에디터에서 죽음 애니메이션을 찾아봅시다.

17
파일포켓 이미지
Death 애니메이션은 2.594초 정도 되니까 바닥에 딱 쓰러진 모습이 되는 군요. 그러면, Death 애니메이션이 재생되고 2.594초 후에 멈추도록 만들면 되지 않을까요?

여기서 글쓴이 께서 알게 되었다는 '타이머'가 사용되는 겁니다.

18
파일포켓 이미지
유닛이 죽으면 이 행위자(_DeathModel이 아닙니다.)에 2.594짜리 타이머를 만들어 줍니다. 이름은 원하시는 대로 해주시면됩니다.
그리고 그 타이머가 만료되면 애니메이션을 멈추도록 해줍니다.

라고 끝나면 다행이지만 안타깝게도 이대로 진행하면 안됩니다.
이유는 간단합니다. 유닛이 소멸하면 소멸 행위자를 만들고나서 유닛의 '부활시간'이 0이기 때문에 0초후에 유닛의 행위자가 파괴되어 버리기 때문입니다.
그러니 2.594초의 타이머가 돌아갈 수가 없죠.그 타이머를 가진 행위자가 '파괴' 되었기 때문입니다.즉, 유닛이 소멸한 순간, 실행되는 메세지들은 SetSclae이나 SetTimer는 작동하지만 그 직후 행위자가 파괴되기 때문에 타이머가 종료되길 기다릴 행위자가 없는 것이지요.
이 방법은 실패네요.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
실패한 구간은 여기까지 입니다. 실패 구간 이전에(그러니 해병만 가지고 구현해보도록합시다.) 이어서 설명합니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

19
파일포켓 이미지
각 유닛의 '소멸 효과'에는 여러가지 데이터가 있습니다. 유닛이 소멸했을때 사용할 모델. 그 모델이 재생할 애니메이션. 유닛 소멸시에 재생할 소리. 그리고 해당 소멸 모델을 제어해줄 행위자 모델.
우리가 주목해야 할 부분은 행위자 모델입니다.

일반적으로, 해병처럼 유닛의 소멸 행위자 모델은 비어 있습니다. 이건 사실, 여태까지 우리가 보아왔던 '유닛 소멸 모델' 행위자와 '죽음 애니메이션 매크로' 만 가지고 유닛이 죽으면 Death애니메이션을 재생하고 재생이 끝나면 게임상에서 사라지는데 아무 문제가 없기 때문입니다.

하지만 우리가 하려는 것은 일반적인 경우가 아니지요.
우리가 하려는 건 유닛이 죽고나서 소멸 모델이 재생되고, 사라지지 않게 하는 것입니다. 근데, 위의 11번 스샷과 설명에서 알 수 있듯이, 소멸 애니메이션은 끝까지 재생하면 사라집니다.그러니까 소멸 애니메이션을 재생은 하되, 끝까지 하면 안됩니다.


17
파일포켓 이미지
Death 애니메이션은 2.594초 정도 되니까 바닥에 딱 쓰러진 모습이 되는 군요. 그러면, Death 애니메이션이 재생되고 2.594초 후에 멈추도록 만들면 되지 않을까요?

여기서 글쓴이 께서 알게 되었다는 '타이머'가 사용되는 겁니다.

20
파일포켓 이미지
행위자 하나를 만들죠. '유닛 소멸 모델'은 기본값 모델이 아니기 때문에 기본값아닌 개체 표시를 꼭 체크 하셔야 선택할 수 있습니다.이름은 일단 marineDeathModelActor라고 지어주겠습니다.

21
파일포켓 이미지
유닛 소멸 모델을 부모로 가지는 소멸 모델 행위자가 만들어 졌습니다. 이제 우리가 여기에 추가할 것은 다음과 같습니다.


1 유닛이 소멸하면 2.594초짜리의 타이머를 만든다.
2 2.594초 후에 Death 애니메이션을 '일시정지'시킨다.

단 두가지 입니다.

22
파일포켓 이미지
행위자가 생성되면 2.594초 짜리 타이머를 만듭니다.

23
파일포켓 이미지
2.594초 짜리 타이머가 끝나면 애니메이션을 모두 일시정지 시킨다.


24
파일포켓 이미지
그럼 이제, 우리가 만든 이 행위자를 실제로 해병에게 적용시켜 봅시다.


25
파일포켓 이미지
성공이네요? 시간 표시로 확인해보십시오.


여기서 끝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!








이면 좋겠지만 사실, 문제는 따로 있습니다.
일단 첫째로,
해병의 소멸 모델을 보시면 Death 애니메이션이 하나가 아니고 여러개입니다. 그 애니메이션들이 죄다 길이가 틀리고 멈춰야할 시점이 다 다릅니다. 그걸 일일이 지금 재생중인 애니메이션에 따라 맞춰줘야 합니다. 수작업으로요.

그리고 둘째로는 일반 소멸이야 저렇게 한다지만 해병은 '폭발,분해,먹힘,절단,화상,암살' 등 여러 사망 모델을 가지고 있습니다. 당연히 해당 모델들마다 다 애니메이션이 다르니까 그거에 따라 또 따로 지정해줘야 합니다. 수작업으로요.

게다가 이걸 다른 유닛에게도 적용하고 싶다? 네, 그 유닛의 수만큼 수작업이 늘어납니다.

과학시설,저그 원시 우두머리, 메가리스, 정화자 감시자 등등. 여러 시체가 영구히 남는 유닛들은 죄다 Death 애니메이션의 마지막 모습을 그대로 영구 반복되는 Dead 애니메이션으로 만들어 놔서, 간단하게 해결했지만 이 말은 바꿔 말하면, 모델링 할때부터 각 유닛에 맞춰 만들어 놨다는 이야기가 됩니다.즉, 이건 블리자드도 일일이 모델별로 작업을 했다는 이야기가 되지요.

민승이 님께서 수 많은 유닛들을 이렇게 영구히 남는 시체를 만들고 싶으시다면 꽤 엄청난 작업량이 기다릴 겁니다.
Cerenas (2020-11-19 10:32:10 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
아, 거기에 또 추가로, 유닛 소멸 물리 인형이 사용된 물리 소멸의 행위자는 또 따로 있습니다. 그것도 영구히 남기고 싶으시면 그것까지 또 따로 일일이 작업하셔야 합니다.
민승이 (2020-11-19 20:36:49 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
와;; 겁나 자세하게 적어주셨네. 진짜 감사합니다ㅠㅠ
민승이 (2020-11-19 20:47:15 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
해결됬네요. 정말 감사합니다
Cerenas (2020-11-19 22:04:03 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
해결됐다고 하시니 다행입니다. 설명문 작성한 보람이 있어요^^b
추신 - 시체만 남는다. 라는 1가지 경우만해도 이렇게 길게 설명해야 해서 '질문의 범위가 넓다' 라고 말씀드린겁니다.^^
weuih (2020-11-20 12:59:15 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
그럼 반대로 과학시설을 파괴하면 사라지게도 가능한가요??
Cerenas (2020-11-20 19:26:19 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
weuih//
네.가능합니다.제답변에서살짝만응용하면됩니다.
2.594초에애니메이션을멈췄듯이, 원하시는시간의타이머를만들고 파괴하면됩니다.
weuih (2020-11-23 19:03:12 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
오 이렇게 하니 싹 사라지더군요 늦었지만 감사합니다♥
Cerenas (2020-11-23 20:39:21 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
weuih//
해결 되어서 다행입니다.^^
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.