[UE5] Unreal - 2

김영웅·2025년 1월 22일

Behavior Tree

기본적으로 왼쪽에 있는 것이 먼저 실행됨.

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 할 수 있음

profile
게임 프로그래머

0개의 댓글