기본적으로 왼쪽에 있는 것이 먼저 실행됨.
Selector
Sequence
BTTaskNode를 상속받아 자식 노드를 구현할 수 있다.
EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent&, uint*) 를 오버라이드해 실행 시 내용을 설정할 수 있다.
Normalize된 벡터로 내적하면 aㆍb = |a||b|cosθ 이므로 코사인 값을 얻을 수 있다.
헷갈려서 GPT로 다시 삼각비에 대해 공부했는데 sin, cos, tan 같은 삼각비는 말 그대로 비율이고
arcsin, arccos, arctan 는 각각 sin, cos, tan 값을 넣으면 그에 맞는 각도(라디안)를 반환해준다.
cos 60º면 1/2인건, 어떤 값이든 빗변으로 나눴을 때 밑변의 비율은 이미 정해져 있기 때문에 이렇게 나오는 거다
여기서 주의할 건 이 모든 계산은 직각삼각형 기준이라는거다.
빗변이 1인데 밑변이 막 2이고 이럴 순 없다.

FCollisionQueryParams로 충돌 설정할 때 AddIgnoredActor로 무시할 엑터 추가 가능
네비게이션 시스템을 사용하기 위해선 모듈을 추가 해야함
.Build.cs 가서 "NavigationSystem"을 추가해줘야 함
Actor는 World->SpawnActor<타입>() 으로 생성 가능
이 때 FActorSpawnParameters를 사용 가능한데
그중 SpawnCollisionHandlingOverride로 벽에 낑겼을 때 소환하냐 안하냐도 조절 가능하다.
AnimInstance를 상속받은 클래스에서 AnimNotify_[이름] 붙이면 Transition에서 [이름]을 써서 이벤트를 호출하게 만들 수 있다.
NavSystem->GetRandomReachablePointInRadius()으로 네비게이션에 빈 공간이 있어도 움직이는게 가능한 구역을 설정값 안에서 찾아서 반환해줌.
프로젝트 세팅 - 패키징 - 고급 - 패키지 된 빌드에 포함시킬 맵 목록에 게임에 사용할 맵을 추가해주고
패키징 - 프로젝트 - 빌드 환경설정에서 출시를 목표인지 개발자 목표인지 고를 수 있다.
프로젝트 세팅 - 플랫폼에서 플랫폼에 따른 설정 가능
모두 세팅이 끝났으면 메인 화면에서 실행 옆에 있는 플랫폼 - 원하는 플랫폼 - 프로젝트 패키지를 누르면 Build 할 수 있음