위는 BP_enemy고 아래는 BP_enemyaicontroller에요
지금 구현하는 부분은 맵에 '액터' 클래스를 상속받은 'BP_patrolpoint' 를 여러개 박아서 적의 순찰 루트를 구성하는 부분이에요
위쪽 사진 'BP_enemy' 에서는 BP_patrolpoint를 배열로 만들고, for each loop를 통해 'patrol point'(BP_patrolpoint 오브젝트 레퍼런스 배열)변수에 담는 과정이 진행됩니다
아래 사진 'BP_enemyaicontroller'는 이제 그 배열을 받고 배열에 있는 포인트들을 순서대로 방문하는 구성인데요
위쪽 블루프린트에서 'patrol point'의 길이를 출력했을 때는 4가 나와요(배치한 순찰 포인트가 네개라 이건 정상이에요)
그런데 아래쪽 블루프린트에서는 길이를 출력하면 0이 나오네요...
방문할 순찰 포인트가 0개니 당연히 이동도 하지 않고 있구요
BP_enemy에서 BP_enemyaicontroller로 제대로 전송이 안된 것 같은데 이유를 알 수 있을까요?
또, move to next patrol point 이벤트를 보시면 같은 이름의 함수가 있어요
이벤트는 앞쪽 실행핀을 못 넣어서 반복을 어떻게 해야 하나 싶었는데 이름을 검색하니 사진처럼 함수 형태로 가져올 수 있더라고요
저렇게 해도 작동할까요?
이게 강좌 같은걸 보고 따라하는게 아니라 단순히 노드 역할만 알고 붙여나가는 중이라 쉽지가 않네요
첫 번째 질문은 해결했어요 변수가 초기화되기도 전에 불러와버려서 그런 거였네요 cast to bp_enemy앞에 딜레이를 잠깐 넣으니 해결됐어요...
블프종특ㅋㅋ
move to는 이렇게해도 작동하냐 ㄴㄴ 이렇게 작동시킨다 ㅇㅇ
빨간핀에 실행핀이 있다고 생각해보샘 그래서 실행시키려고 빨간핀에 선 이어줬다 생각해보셈 그러면 거기서 빨간핀이 하는게 없잖음 그렇게쓰느니 빨간핀을 삭제하고 빨간핀의 내용물 쭉 잇고말지 빨간핀은 이 이름의 함수는 이런 역할을 해요 라고 정의해두는거라고 생각하셈 필요할때마다 만드는건 번거로우니까, 노드 하나로 실행시키려고 있는거다
아 글케 생각하니까 편하네요
ai move destination 0.0.0인데 이동 됨?
벡터 방식을 쓸때는 거기에 핀을 연결해야 하는데 저는 바닥에 박아놓은 포인트(액터)를 따라 순찰하게 만든거라 그 포인트를 target actor에 연결햇서요ㅕ
move to 에 폰에 아무것도 안박으면 작동 안됐던거 같은데
nav mesh 깔아도 안된거면 나도 모르겠네
nav mesh는 깔았음?
넨
보시면 둘다 begin play 이벤트에서 받고 계신데, 그렇게 하시면 두 오브젝트의 이니셜라이제이션 순서에 따라서 패트롤포인트 받는 로직이 뒤로 밀려서 그럴수 있습니다. 두번째 질문은 아마 직접 해보셔야할거 같은데 되면 되는거고 안되면 다시 도와드릴게용
그리고 인터페이스 써서 델리게이트 레퍼런스를 보내든 이벤트를 호출해서 만들든 하시는게 좋아보이네요. 타입캐스팅 바로 올리시면 메모리에 항상 로드되어서 나중에 메모리 관리 어려워집니다
그리고 ai move to에 보시면 pawn 핀 비어있어요 저거 채워보세용
첫번째 질문은 일단 delay 넣고 두번째도 어떻게어떻게 작동은 되네요 근데 저도 pawn이 비어있어서 안되는게 맞지않나 생각했는데 움직이고 있어여ㅛ; 일단 되는건 좋은데 왜 그런 걸까요...
그리고 BP_patrolpoint를 여러개 만들어서 그 액터들을 다 불러와서 배열을 만드는게 왜 그렇게 하는지 모르겠는데 그냥 하는 방식을 아예 몰라서 그런거라면 그냥 액터 하나만 만들고 컴포넌트에 spline을 추가하는걸 추천하고 싶네
Get all ~ 노드 대신에 적에게 직접 패트롤포인트 배열 변수를 만들거나 여러 적이 공유한다면 패트롤 포인트 블프 컴포넌트를 만들어서 붙이면 됨 그리고 딜레이 써서 순서 맞추지 말고 에너미컨트롤러 블프 begin play를 커스텀 이벤트로 대체하고 에너미 블프에서 루프 끝나면 분기점 지우고 뒤에 캐스트 연결해서 컨트롤러에서 만든 이벤트 호출해 이벤트 호출 방법은 너가 한 방법이 맞음 - dc App
감사합니다 다들