본문 바로가기

포트폴리오 제작48

Project_P 인터페이스를 활용하여 의존성 낮추기 기존 AnimInstance의 문제점https://k99812.tistory.com/93 Project_P 캐릭터 애니메이션 설정(1) Anim Instance 구현Anim InstanceAnim Instance는 애니메이션 블루프린트를 생성할 때 상속받는 클래스다Anim Instance에서는 추후 애니메이션 블루프린트에서 사용할 액터, 컴포넌트를 받아올 수 있고받아온 액터, 컴포넌트k99812.tistory.comAnimInstance를 구현할때 방향에 따라 멈추는 애니메이션을 재생하기 위해 플레이어가 MoveInput이 Relesed 될때 델리게이트를 사용해 AnimInstance의 SaveLastDirection함수를 호출하는 로직이 있었다. //헤더파일TObjectPtr Owner;void UPP.. 2025. 1. 16.
Project_P 행동트리 모델 공격방향으로 로테이션 기존 공격 노드는 공격시 방향전환을 하지않아 플레이어가 사거리내에서 움직이면 계속 처음 공격방향으로 공격을 진행 심플 페러렐 노드를 사용하여 어택과 Turn노드를 동시에 실행 UBTTask_TurnToTarget헤더파일#include "CoreMinimal.h"#include "BehaviorTree/BTTaskNode.h"#include "BTTask_TurnToTarget.generated.h"/** * */UCLASS()class PROJECT_P_API UBTTask_TurnToTarget : public UBTTaskNode{ GENERATED_BODY() public: UBTTask_TurnToTarget(); virtual EBTNodeResult::Type ExecuteTask(UBeha.. 2024. 12. 18.
Project_P 몬스터 HPBar 기능 추가 HPBar 보완점기존 HPBar는 몬스터가 벽뒤나 멀리 있어도 HPBar가 화면에 표시되어 위치를 알 수 있음그래서 HPBar를 몬스터가 적을 인식할 때만 표시를 하려함 AI의 인식을 처리하는 AIController에 델리게이트를 생성하여 AI가 타겟을 인식하면 델리게이트를 통해 bool변수 true를 넘겨줌 타겟을 잊어버리면(null처리) bool변수 false를 넘겨줌 HPBar가 있는 CharacterGrunt 클래스에서 SetVisibility 함수를 통해 HPBar를 관리 APPAIController에서 델리게이트 생성 및 실행헤더파일DECLARE_DYNAMIC_DELEGATE_OneParam(FFindTargetDelegate, bool, bFindTarget);UCLASS()class PRO.. 2024. 12. 18.
Project_P HUD 위젯 제작 HUD와 기존 위젯 컴포넌트의 차이점 위젯 컴포넌트를 통해 생성한 몬스터 HPBar는 GetOwningPlayerPawn함수를 통해 UI를 소유하고 있는폰을 가져오려면 위 스크린샷과 같이 에러가 발생한다. 그래서 위젯 컴포넌트에서 위젯이 초기화 될때위젯에 오너를 넘겨 오너를 사용해야 된다. HUD위젯은 플레이어 컨트롤러에 생성을 한다. 그래서 문제없이 GetOwningPlayerPawn 함수를사용할 수 있다 위젯 제작C++ 클래스 생성 UserWidget을 상속받아 PPPLayerStatBarUserWidget, PPHUDWidget을 생성한다 위젯 블루프린트 생성 PPPLayerStatBarUserWidget을 상속받아 위젯 블루프린트를 생성하여 HPBar, MPBar를 프로그래스바와 텍스트를 이용하.. 2024. 12. 18.
Project_P 행동트리 모델 데코레이터 및 테스크 생성 행동트리이전글에서 AI(NPC)가 플레이어를 인식하여 타겟을 설정 및 해제가 가능해짐 셀렉터 컴포짓을 통해 BlackBoard 데코레이터를 분기로 타겟이 없을때 정찰을 수행하게 함 타겟이 있을때 공격범위안에 있는지 확인하는 데코레이터를 C++로 구현함공격범위 안에 있으면 공격테스크를 실행공격범위 밖이면 타겟으로 이동 IsAttacking 데코레이터의 경우 NPC가 공격중 움직이지 못하게 제한함 BTDecorator_AttackInRange 생성 BTDecorator를 상속받음 헤더파일#include "CoreMinimal.h"#include "BehaviorTree/BTDecorator.h"#include "BTDecorator_AttackInRange.generated.h"/** * */UCLASS.. 2024. 12. 10.
Project_P 행동트리 모델 AI Perception 블랙보드의 타겟정보를 업데이트 하기위해 언리얼에서 제공해주는 AI Perception기능을 사용했다AI Perception은 AI(NPC)가 액터나 다른 Pawn을 인식할 수 있는 여러 감각들을 제공해준다.AIPerception은 시각, 듣기 등 여러 감각이 있어 이를 활용하였다 공식문서 : https://dev.epicgames.com/documentation/en-us/unreal-engine/ai-perception-in-unreal-engine AI Perception 시각으로 블랙보드의 타겟변수를 설정 및 해지를 할것이다 APPAIController 헤더파일AI Perception을 사용하기 위해 AIController에 AIPerceptionComponent, UAISenseConfig를 생성.. 2024. 12. 9.
Project_P 행동트리 모델 NPC 정찰 구현 NPC 정찰 구현 NPC 정찰을 위한 행동트리 No Target 데코레이터는 추후 작성 예정Sequence 컴포짓으로 대기, 정찰위치 지정, Move To 태스크 순서로 실행 Nav Mesh 생성 및 디버깅 방법정찰 위치를 지정하기 위해 Nav Mesh가 필요 Place Actors → Volumes 에서 Nav Mesh Bounds Volume을 생성 후 NPC가 움직일 땅을 Nav Mesh 로 (영역안으로)지정 키보드 'P'를 누르면 Nev Mesh에 지정된 영역을 확인할 수 있음 플레이 버튼을 눌러 실행한 뒤 키보드 '를 누르면 AI 컨트롤러를 가지고 있는 액터를 디버깅할 수 있음추후 구현할 Perception 및 행동트리, 네브 매쉬등 어떻게 동작하고 있는지 확인할 수 있음 BTTask_Find.. 2024. 12. 6.
Project_P 행동트리 모델 생성 언리얼 AI 종류 Behavior Tree행동트리 모델Blackboard인공지능 모델에서 의사결정을 하기 위한 기본 데이터를 제공해주는 데이터 저장소행동트리에서 필요한 변수(데이터)를 관리Evironment Query행동트리에서 호출되어 환경으로부터 데이터를 수집하는데 사용AI컨트롤러에 행동트리 적용AIController를 상속받아 APPAIController클래스 생성 APPAIController 헤더파일#include "CoreMinimal.h"#include "AIController.h"#include "PPAIController.generated.h"/** * */UCLASS()class PROJECT_P_API APPAIController : public AAIController{ GENERA.. 2024. 11. 14.
Project_P 체력바 UI 생성 위젯을 담을 위젯 컴포넌트 생성 UWidgetComponent를 상속받아 PPGASWidgetComponent 생성 UWidgetComponent 헤더파일#include "CoreMinimal.h"#include "Components/WidgetComponent.h"#include "PPGASWidgetComponent.generated.h"/** * */UCLASS()class PROJECT_P_API UPPGASWidgetComponent : public UWidgetComponent{ GENERATED_BODY() protected: virtual void InitWidget() override;}; virtual void InitWidget() override;위젯의 설정을 위해 InitWid.. 2024. 10. 21.