본문 바로가기

분류 전체보기137

Effective C++ 항목 2: #define보단 const, inline을 사용하자. #define의 문제점#define은 매크로 상수나 매크로 함수를 정의하는데 사용된다. 이때 발생하는 문제점은 다음과 같다. #define으로 만들어진 매크로 상수는 기호식 이름(symbolic name)으로 보이지만 컴파일러에겐 보이지 않는다.#define A_define 16.3#define은 컴파일러가 처리하기 전에 전처리기가 작동해서 코드 내에 있는 모든 A_define를 16.3으로 바꾸는 텍스트 치환을 수행한다.즉, 컴파일러는 매크로 자체에 대해 아무 정보를 갖지 않고 치환된 값을 기준으로 컴파일한다. 그래서 생기는 문제점이 뭔가?이렇게 정의되어 있다면 A에 16.3이라는 값을 매크로로 할당한 것이다.그럼 이 값이 어떤 타입(int, double, float)인지 알 수 없다. 컴파일러는 매크.. 2024. 9. 30.
Unreal BehaviorTree RequestExecution(), StopTree() Player를 쫓아오는 AI를 만들 때 일정 거리에 도달하면 근처에서 대치하는 상황을 만들고 싶었다. 이때 이상한 현상이 발생했다.코드는 다음과 같다.void UBTD_IsWithInIdealRange::TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds){ CalculateRawConditionValue(OwnerComp, NodeMemory); if(!TickFlag){ UE_LOG(LogTemp, Display, TEXT("Tick Node!!")); TickFlag = true; }}bool UBTD_IsWithInIdealRange::CalculateRawCon.. 2024. 9. 24.
Unreal BehaviorTree OnBecomeRelevant & OnCeaseRelevant OnBecomeRelevant & OnCeaseRelevant먼저 OnBecomeRelevant를 도큐먼트에 검색해보면 두가지가 나온다.https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/AIModule/BehaviorTree/Decorators/UBTDecorator_BlueprintBase/OnBecomeRelevant?application_version=5.4https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Developer/AITestSuite/BehaviorTree/UTestBTDecorator_Blackboard/OnBecomeRelevant?applic.. 2024. 9. 24.
Unreal Behavior Tree 'Check Condition Only if Blackboard Changes' Behavior Tree의 Decorator를 Blueprint로 만든 것에서 CPP로 만들다가 발생한 이슈에 대한 풀이이다.이 영상이 의도한대로 구현된 것이다. 일정거리 이상 멀어지면 바로 따라오도록 만들고 싶었다.Blueprint로 만든 것은 이렇게 생겼다. 이걸 그대로 구현하고 싶어서 cpp에는 이렇게 만들었다.#include "Enemy/EnemyAI/Decorator/BTD_IsWithInIdealRange.h"#include "AIController.h"#include "BehaviorTree/BlackboardComponent.h"UBTD_IsWithInIdealRange::UBTD_IsWithInIdealRange(){}bool UBTD_IsWithInIdealRange::Calculate.. 2024. 9. 23.