본문 바로가기

전체 글143

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.
UnrealEnigne 행동트리(Behavior Tree) 모델 보호되어 있는 글 입니다. 2024. 11. 5.
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.
Project_P GE를 사용하여 데미지 전달 및 체력 감소 데미지를 전달할 GameplayEffect 생성 GameplayEffect를 블루프린트로 상속받아 블루프린트 클래스를 생성한다 현재 기능은 단순히 캐릭터의 공격력 스탯(어트리뷰트)만큼 데미지를 전달하는 기능이기 때문에Modifirers를 이용한다 좀더 복잡한 계산(방어력 등)이 필요하면 Executions을 이용하면 된다.Executions는 GameplayEffectExecutionCalculation을 상속받아 구현할 수 있다 모디파이어 설정수정할 어트리뷰트를 선택연산자를 선택 Magnitude Calculation Type에서 전달할 값을 어떤 방식으로 지정할 것인지 선택한다여기선 Attribute Based로 선택해 캐릭터의 어트리뷰트(스탯)를 가져온다Coefficient 항목에선 전달할 값을 변.. 2024. 10. 18.
Project_P AttributeSet을 캐릭터에 생성하기 플레이어 캐릭터에 AttributeSet 생성플레이어 캐릭터의 경우 캐릭터에 대한 정보를 플레이어 캐릭터에 직접적으로 생성하지 않고(멀티플레이이를 고려)PlayerState 클래스에 생성한다 PlayerState 헤더파일#include "CoreMinimal.h"#include "GameFramework/PlayerState.h"#include "AbilitySystemInterface.h"#include "PPGASPlayerState.generated.h"/** * */UCLASS()class PROJECT_P_API APPGASPlayerState : public APlayerState, public IAbilitySystemInterface{ GENERATED_BODY() public: APPG.. 2024. 10. 16.
Project_P AttributeSet을 사용하여 스탯 만들기 AttributeSet 생성 AttributeSet을 상속받아 PPCharacterAttributeSet을 만든다 PPCharacterAttributeSet 헤더파일#pragma once#include "CoreMinimal.h"#include "AttributeSet.h"#include "AbilitySystemComponent.h"#include "PPCharacterAttributeSet.generated.h"#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ G.. 2024. 10. 16.
Project_P 캐릭터에 구현된 Move함수 실행시 GameplayTag 부여 Move 함수캐릭터를 움직이는 Move 기능을 GA가 아닌 캐릭터에 함수로 구현 하였음그래서 Move가 실행 중일때 Tag를 붙이고 싶으면 따로 코드로 구현해야 함 Move 함수를 GA로 구현하지 않은 이유는 GA 실행시 변수를 전달할 방법을 찾지 못함 MoveInputReleasedMove 입력이 끝나면 호출되는 함수Move함수에서 부착한 Tag와 발동중인 Sprint GA가 있으면 취소시키는 함수 코드로 Tag 부착void APPGASCharacterPlayer::Move(const FInputActionValue& Value){ //ASC에 태그 달기 //#include "GameplayTagContainer.h" 추가 FGameplayTagContainer WalkingTagContainer; W.. 2024. 10. 4.
Project_P 공격 판정 구현(4) TA 타겟액터 구현 TA 타겟액터 생성 GameplayAbilityTagetActor를 상속받아 PPTA_Trace 클래스를 생성 PPTA_Trace 헤더파일#include "CoreMinimal.h"#include "Abilities/GameplayAbilityTargetActor.h"#include "PPTA_Trace.generated.h"/** * */UCLASS()class PROJECT_P_API APPTA_Trace : public AGameplayAbilityTargetActor{ GENERATED_BODY() public: APPTA_Trace(); virtual void StartTargeting(UGameplayAbility* Ability) override; virtual void ConfirmTar.. 2024. 9. 11.