일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- winapi
- directx
- baekjoon
- UnrealEngine4
- GeeksForGeeks
- DirectX11
- RootMotion
- 백준
- 1563
- 티스토리챌린지
- C++
- const
- algorithm
- 팰린드롬 만들기
- Programmers
- 줄 세우기
- 언리얼엔진5
- Frustum
- Unreal Engine5
- 오블완
- softeer
- RVO
- UnrealEngine5
- 프로그래머스
- DeferredRendering
- NRVO
- C
- UE5
- 2294
- IFileDialog
- Today
- Total
Game Develop
[UE5] C++로 AI Perception 사용할 때 주의할점. 본문
며칠동안 C++로 생성한 AIPerception 컴포넌트가 제대로 감지를 못해서 막혔었다.
아예 감지가 안되는건 아닌데, 됐다 안됐다 그랬었다.
감지가 제대로 안됐던거는 SightConfig 각 옵션값들 (시야각,인지거리 등등)을 넣을 때 뭔가 잘못 넣어서 그랬던 것 같다.
혹시 몰라서 블루프린트로 컴포넌트 추가하고 확인해보니까 잘만 되길래 '값설정을 잘못한 것 같은데..?'라는 생각을 했다.
그래서 다시 C++코드로 아무값도 없이 컴포넌트가 생성됐을 때의 디폴트값 그대로 냅두고 빌드 후 플레이 시키니까 잘만 됐다....
그리고 시각이나 청각 등등의 Config를 생성 후에 OnTargetPerceptionUpdated에 호출할 함수를 바인딩 하는 경우가 많을것이다. (혹은 PerceptionUpdated 등등등) 아래와 같이..
GetPerceptionComponent()->OnTargetPerceptionUpdated.AddDynamic(this, &AMeleeMinionAIController::CheckIsTarget);
이 때, 바인딩할 커스텀함수는 '반드시' UFUNCTION(). 매크로를 붙여줘야 한다.
감지까지 잘 되게 문제해결은 했는데 바인딩한 함수가 호출이 안되길래 고민하고 있었는데, 우연히 에디터의 Output 로그를 보니까 관련된 오류가 빨간색으로 보기좋게 되더라..
대충 보아하니 함수를 바인딩할때 UFUNCTION()매크로가 선언되어있어야 한다고 친절히 적혀있었다.
심지어 비쥬얼스튜디오에서 AddDynamic부분에 마우스를 갖다대면 나오는 설명에도 UFUNCTION()인 함수가 들어와야한다고 적혀있었다....
딱히 메시지박스로 뜨거나 에디터가 강제종료된다거나 하는게 없었기 때문에 그런 오류가 뜬줄도 모르고 이때까지 그냥 삽질했던 거다.
이제부터 반드시 빌드한 후에 체크해야겠다...
'UnrealEngine5 > 이것저것' 카테고리의 다른 글
[UE5] 가상함수 생성하기. (0) | 2023.03.28 |
---|---|
[UE5] AIPerception 각 옵션변경 실시간 적용하기 (0) | 2023.03.03 |
[UE5] CSV파일 로드 후 조작하기 (string to enum class) (0) | 2023.02.21 |
[UE5] FString to const TChar* 하기 (0) | 2023.02.10 |
[UE5] 패널이 안보일 경우 대처법. (0) | 2023.02.03 |