안녕하세요! '언리얼로 만들어보는 RPG'의 필자입니다. 이번 글에서는 전에 작성하던 Task노드의 나머지 두개를 정리하러 돌아왔습니다. 폭풍같은 회사일정이 지나고 나니까 정신이 없네요. 이전 글에서는 새로운 내용도 많았으나 이번에는 크게 새로울건 없어서 내용이 그렇게 길지 않을것 같습니다.

UCustomMove.h

1-1) 굉장히 간소하다

 당시 필자가 어떤 생각으로 작업을 했는지는 모르겠으나 엔진에서 기본제공하는 MoveTo Task노드를 상속받아서 구현을 했었습니다.

UCustomMove.cpp

1-2) 사실상 핵심은 마지막 if문입니다.

 지금 보면 정말 이해안가는 방식의 작업물이긴 합니다. 결국 하고싶었던건 AcceptableRadius 변수에 몬스터의 사거리를 대입하고 싶었던것 뿐이니까요. 이 외에는 부모클래스인 MoveTo 쪽에서 다 처리합니다. 이럴꺼면 차라리 다른 방법을 사용하는게 나았을 수도 있을것 같습니다.

 

UAttackSelector.h

2-1) 전 글과 다르게 이것도 별거 없습니다

UAttackSelector.cpp

2-2) 허무합니다

 공격을 선택하는부분이 상당히 빈약한데 이건 몬스터랑 애니메이션 클래스를 같이 설명해야 하는부분이라서 크게 적을게 없습니다. 하지만 역시나 여기서도 이상한 부분이 존재하는데 그걸 포함해서 앞으로 있을 작업을 미리보는 느낌으로 설명하겠습니다.

 

 우선 AttackType이라는 변수를 AttackAble이라는 bool배열의 크기의 범위로 랜덤한 값을 구해서 대입합니다. 이 글을 읽고 계신 여러분이라면 당연히 떠올릴법한 궁금증이 하나 있으실텐데요. '왜 랜덤값을 유지를 하는가?' 그건 필자의 잘못된 애니메이션 설계때문이라고 답해드릴수 있습니다.

 

 저번 AI(1) 글에서 유한상태기계에 대해서 이야기 한적이 있습니다. 그런 스타일로 작업을 하다보니까 거미줄로 가득한 아름다운 애니메이션BP를 만들게 되었고 그 덕에 저 값을 유지해야 한다는 사실입니다.

 

 AI의 마지막인데 이렇게 짧아서 너무 날로 먹는거 아닌가 싶긴 합니다. 하지만 격무에 치이는동안 글쓰는 감각을 잃은 필자의 재활기간이라 생각해주시면 좋을것 같습니다. 그럼 다음 글에서 뵙도록 하고 이만 글을 줄이도록 하겠습니다.

Posted by 별수집가
,