언리얼엔진/AI4 [AI] 비헤이비어 트리 기초 Key 사용법 // .h 파일 UCLASS() class SWORDORGUN_API UBTService_DetectByPerception : public UBTService { GENERATED_BODY() public: UBTService_DetectByPerception(); static const FName TargetActorLocation; static const FName TargetActorLength; // 상수로 사용함으로써 오타 방지, 프로젝트 전체에서 사용 가능 protected: virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override; }; // cpp.. 2024. 2. 11. [NPC 이동] Navi에서 랜덤값을 불러오지 못해 NPC가 이동하지 않는 경우 포폴을 만들 때 언리얼엔진5 AI 순찰 구현에서는 FNavLocation EndPatrolLocation; if (true == NS->GetRandomPointInNavigableRadius(FVector::ZeroVector, AIController->PatrolRadius, EndPatrolLocation)) { OwnerComp.GetBlackboardComponent()->SetValueAsVector(ASAIController::EndPatrolPositionKey, EndPatrolLocation.Location); return Result = EBTNodeResult::Succeeded; } 와 같은 네비게이션 시스템에서 랜덤 위치를 불러오는 방법을 주로 사용한다(서치를 해도 보통 이 방법.. 2024. 1. 28. [AI] UBehaviorTreeComponent::FinishLatentTask void UBehaviorTreeComponent::FinishLatentTask(EBTNodeResult::Type Result) 지연 태스크를 만들 때 사용하는 함수로, 한 태스크에서 이 함수를 불러오지 않으면 비헤이비어 시스템이 해당 태스크에 계속 머무르게 하는 함수. 일반적으로 비동기 작업이 완료되면 그 값을 저장하는 타입인 EBTNodeResult::Type값을 전달해 현재 실행중인 노드를 완료하는데 사용 ex) FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded); 이렇게 EBTNodeResult::Succeeded를 같이 넘겨주면 현재 노드가 완료되었다는 것을 알려줄 수 있다. 2024. 1. 23. [AI] UBlackboardComponent::GetValueAsObject GetValueAsObject : 블랙보드에서 해당 오브젝트 타입에 해당하는 값을 불러오는 함수 ex) GetValueAsObject(ASAIController::TargetActorKey) 내 스크립트의 경우 AIController 클래스에 키를 const FName으로 저장해두기 때문에 이렇게 가져와야 한다. 자매품 GetValueAsVector : FVector UBlackboardComponent::GetValueAsVector(FName key) const; 벡터값을 가져옴 GetValueAsRotator GetValueAsName 등등.. 2024. 1. 23. 이전 1 다음