Anim Instance 를 상속받는 법은 알고있었어. C++에서 상속받은 UClass 를 생성하여 그 클래스를 상속받아 만들면 C++에서 구현한 적어도 로직, 이벤트 그래프 부분만은 사용할 수 있지.
블루프린트에서도 애니메이션 블루프린트를 상속받아 만들 수 있는데 심지어 Target Skeleton 가지 변경 가능해서 Skeleton 은 다르지만 쓰이는 애님 블루프린트 로직은 같을 때 매우 유용하게 쓸 수 있어.
애님 블루프린트를 상속받아서 자식클래스를 만들면 자식에서 Anim Graph를 수정할 수 없다는거야... 이거 매우 슬픈얘기야... 하지만 변수로 뺀것들은 전부 수정이 가능하기 때문에 애님 그래프에서 스테이트 머신을 만들고 Bool 로든 어떤 변수로든 그 과정을 거쳐서 사용할 애니메이션을 결정할텐데 그 애니메이션이 Anim Montage 이든 Anim Sequence 형태일꺼야. 그 부분을 Static 하게 결정하는게 아니라 그 부분도 변수로 뺄수가 있거든. 그래서 그 변수에다가 자식 블루프린트에서 그 본에 맞는 Anim Montage, Anim Sequence 를 설정하면 어느정도 애님그래프도 상속 받는다는 느낌을 줄 수가 있지.
Anim Instance 를 상속받은 C++클래스를 상속 받아 애님블루프린트를 만들면 그건 애님그래프를 수정할 수가 있어. 흠... 내가 알아보진 못했지만 C++ 단의 Anim Instance 에서 Anim Graph 쪽을 건들 수 있는지는 안알아봤는데... 글을 적다보니 그것도 괜찮은 방법 같은데...? 만약 가능하다면 C++에서 부모가 되는 Anim Graph Logic 을 만들고 자식에서는 그걸 약간 Override 하면 되지않을까...?
일단 지금 하고싶은건 로직부분이야 뭐 원래 되는거 알고있었고... Anim Graph 부분을 해결해야해. 머리가 Target Actor 혹은 Target Location 뭐... Target Actor 도 결국 Location 을 알아야하니까 Target Location 을 바라보게 만드는 로직을 상속받아서 작동하게 만들고 싶은데 Skeleton 마다 전부 BoneName 이 다르니 상속받은 블루프린트에서 어떤 본이 Head 로 설정을 할거며 좀 더 확장한다면 이걸 맵으로 만들어서 본마다 Target Location 을 바라볼 Alpha 값을 주면 어떨까... 하는 생각이 드는데 Anim Graph 에는 특정 본이 Target Location 을 바라보게 만드는 편한 노드가 있지 바로 한글로는 '보는 방향' 이라는 노드야. 영어로는 'LookAt'이라고 되어있는것같애.
이러한 노드는 디테일패널에서 여러가지 값들을 하드하게 넣을 수도 있고 변수로 생성할 수도 있지. 하지만 아쉬운건 어떤본이 영향을 받을지는 변수로 뺄 수 없게 만들어놨어... 그럼 애니메이션 블루프린트 상속은 전혀 의미가 없게 되버리는거야...
리서치를 하던 도중 이 Anim Node 자체를 만들 수 있는 방법이 있는것같아 찾아보고있어. 또 새로운 부분에서 파헤치는거라 엄청난 삽질이 예상돼... 안그래도 어제 이거 리서치하고 코드로 만들고 컴파일 성공만 하루종일 붙들고 있었거든... 근데 그래도 결국 실패했지만 오늘 다시 해보니 이제 문제가 보이기 시작하는것같애. 내가 놓친 부분들. 그리고 이해가 안갔던 부분이 조금씩 이해가는것같애. 가끔 잘 안풀릴땐 한숨 자는게 답일때가 있지.
일단 지금까지 알아낸건 AnimGraphNode 와 AnimNode... 이게 다른거였다는거야. AnimGraphNode 는 이 노트가 블루프린트에 나타내기 위한 UClass 였고 AnimNode는 이 노드가 실행될 때 실행될 로직들이 들어있는 UStruct였어. 일단 지금은 아 이게 문제였고 그럼 이제 다음단계로는 내가 생각한대로 그런 노드를 만들 수 있을까? 왜 언리얼은 Bone을 변수로 뺄 수 없게 만든걸까... 뭔가... 이유가 있을법하지만 그래도 지금은 막혔던 부분이 풀려서 그 시원함과 또 밀려오는 뭔가모를 불안감... 과연 어떻게 될까...