본문 바로가기
Uneal DataAsset으로 Combo System 만들기 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Engine/DataAsset.h"#include "ABComboActionData.generated.h"/** * */UCLASS()class PRACTICE_API UABComboActionData : public UPrimaryDataAsset{ GENERATED_BODY()public: UABComboActionData(); UPROPERTY(EditAnywhere, Category = Name) FString MontageSectionNamePrefix; UPROPERTY(Ed.. 2025. 3. 24.
Unreal DataAsset DataAssetUDataAsset을 상속받은 Unreal Object Class이다.에디터에서 에셋 형태로 편리하게 데이터를 관리할 수 있다. 예시캐릭터 컨트롤에 관련된 주요 옵션을 모아 Data Asset으로 관리를 예시로 해보자.C++ Class에서 DataAsset을 추가하고헤더파일에 이와 같이 다양하게 추가해준다.float값의 경우엔 생성자에 다음과 같이 작성해주면 된다. 그리고 Unreal 에디터에서Miscellaneous -> DataAsset으로 들어가서 방금 생성한 Class를 선택해주면 생성이 된다. 생성한 DataAsset에 들어가보면다음과 같이 헤더 파일에 선언한 속성값을 채워넣을 수 있게 UI가 제공이 된다.다음과 같이 사용할 값을 DataAsset(여기선 UABCharacterC.. 2025. 3. 22.
Unreal AIController 제작 이번에 BehaviorTree에 쓰일 AIContoroller(AIC)를 직접 제작해보았다. UPawnSensingComponent에서 UAIPerceptionComponent로 변경UPawnSensingComponent: 간단한 AI 감지 시스템에 필요한 경우 사용된다.UAIPerceptionComponent: PawnSensingComponent에서 제공하는 시각, 청각 감지 기능뿐만 아니라 손상 등 다양한 감지 기능을 지원한다.  이렇기에 이후에 더 확장성이 높은 UAIPerceptionComponent로 바꾸었다.AIPerceptionComponent = CreateDefaultSubobject(TEXT("AI Perception"));AIC의 생성자에 다음과 같이 추가했다. OnPossessht.. 2024. 10. 7.
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.
Unreal Behavior Tree SetFocus Not Working 우와... 이거 찾는다고 너무 오래 걸렸다.특이하게 SetFocus를 활용하려면 해당 Actor의UseController Desired Rotation은 활성화 되어 있어야하고Orient Rotation to Movement는 비활성화 되어 있어야한다. 어느 순간 Strafe를 하면서 Player를 쳐다보지 않아서 계속 헤매다가 발견했다.이렇게 메모장에 끄적이면서 찾았는데 원인이 맞았다. 내가 찾았을 때는 이렇게 설정이 되어있었다. 두 설정 설명Use Controller Desired Rotation캐릭터가 Controller (Player or AI System)의 회전 방향을 따라가도록 하는 설정이다.Player의 경우 마우스나 게임패드로 조종하는 Yaw(수평 회전) 방향을 그대로 캐릭터가 회전하며A.. 2024. 9. 10.
Unreal BehaviorTree Task C++ ShowPropertyDetails 위의 FocusTarget은 C++로 만든 Task이고 아래는 BP로 만든 Task이다.기능을 만들다가 BP로 만든 것은 아래에 Attack Target Key가 어떤 것을 지정하고 있는지 나타내는게 한눈에 확인하기가 편해서 C++로 만든 Task로도 보고 싶어서 찾아봤다. 해당 옵션을 활성화 시키면 원하는 동작이 되는 것을 확인하고 찾아보았다.  C++ 제작 방법C++에는  이런 함수가 있다는 것을 확인했다.이걸 .h파일에 적는다.virtual FString GetStaticDescription() const override; 그리고 cpp 파일에 다음과 같이 작성했다.FString UBTTask_FocusTarget::GetStaticDescription() const{ return FStrin.. 2024. 9. 9.
Unreal Behavior Tree EQS 에러 해결 지금 적이 공격을 받고 체력이 떨어졌을 때 벽 뒤로 숨는 기능을 EQS로 만들다가 특이한 에러가 있어서 기록하려고 한다.Item Height Offset에 관한 설명은 다음과 같이 나온다. 그래서 EQS로 생성하는 Point는 같은 평면에 있어서 움직이지 않아도 되겠지라고 생각하며 Default인 0으로 두고 다양하게 시도 해봤지만 되지 않았다.아무거나 건들여보자라는 생각으로 Item Height Offset을 100으로 수정하니 원하는 결과가 나왔다. EQS의 오류인지 아니면 내가 이해하지 못한 무언가가 있는지는 아직까지는 잘 모르겠다. EQS는 Player Start를 기준으로 생성되고 있으며 Test Pawn과 Player Start의 Z값은 서로 같다.겨우 0.1의 값만 넣어도 원하는 방향으로 적.. 2024. 8. 26.