루트슈터
-
블루아카이브 루트슈터 팬게임 프로젝트(24) - 무기 사운드 추가루트슈터 프로젝트 2024. 1. 26. 21:31
안녕하세요. 이번에는 무기의 사운드를 추가해보았습니다. 총기류 에셋을 보면 총기 사운드 또한 딸려서 같이 주는 경우가 많습니다. 이러한 사운드 파일을 이용해서 애니메이션에 사운드 노티파이를 이용해 특정 지점에 사운드를 재생시킬 수 있습니다. 특정 애니메이션 구간에서 사운드를 재생시키고 싶다면 노티파이에서 사운드 재생 노티파이를 하나 추가하시면 됩니다. 디테일 패널에서 사운드를 골라주시면 특정 애니메이션 시점에 사운드를 재생시킬 수 있습니다. 저는 재장전 애니메이션에서 2개의 사운드 노티파이를 추가하여 사운드가 재생되도록 하였습니다. 그리고 총기 발사 애니메이션에서 총소리를 추가하기 위해 여기서도 사운드 노티파이를 하나 추가하였습니다. 사실 총기는 종류마다 소리가 다르기 때문에 이곳에서 노티파이를 추가하는..
-
블루아카이브 루트슈터 팬게임 프로젝트(23) - 재장전 & 무기교체 애니메이션루트슈터 프로젝트 2024. 1. 26. 03:35
안녕하세요. 이번에는 재장전 애니메이션과 무기교체 애니메이션을 적용해 보았습니다. 이번에 사용할 기능은 애니메이션 노티파이와 델리게이트, 스테이트입니다. PlayerCharacter.h DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDele_Dynamic); public: UPROPERTY(VisibleAnywhere, BlueprintAssignable, Category = "Event") FDele_Dynamic FDele_StartReload; //재장전 델리게이트 UPROPERTY(VisibleAnywhere, BlueprintAssignable, Category = "Event") FDele_Dynamic FDele_StartSwitch; //무기교체 델리게이트 먼저 캐릭터 클..
-
블루아카이브 루트슈터 팬게임 프로젝트(22) - 메인화면 구현루트슈터 프로젝트 2024. 1. 25. 03:28
안녕하세요. 이번에는 메인화면을 간단하게 구현해보았습니다. 게임을 실행하자마자 바로 게임이 시작되면 위화감을 느낄 수 있으므로 간단하게나마 메인화면을 만들었습니다. https://ansohxxn.github.io/ue4%20lesson%201/ch6-2/ UE4 Chapter 6-2. UI : 메인 메뉴 인프런에 있는 황대희님의 언리얼 엔진4 3D 횡스크롤 게임 만들기 강의를 듣고 정리한 필기입니다. 😀 언리얼 엔진 공식 문서 https://docs.unrealengine.com/ko/index.html ansohxxn.github.io 메인메뉴 기능은 이 포스팅을 참고하여 제작하였습니다. 좋은 포스팅 감사합니다. 적당하게 비어있는 레벨을 하나 만들어 줍니다. 메인화면의 배경이 될 공간입니다. 또한 저는..
-
블루아카이브 루트슈터 팬게임 프로젝트(21) - 게임 저장 시스템루트슈터 프로젝트 2024. 1. 23. 18:50
안녕하세요. 이번에 해볼 것은 플레이어 정보를 세이브 하는 기능 구현입니다. 루트슈터이고 RPG이기 때문에 플레이어의 정보를 저장하고 계속 이어할 수 있도록 해야합니다. 언리얼에서는 기본적으로 세이브 파일을 생성하거나 로드하는 기능을 제공합니다. SaveGame.h UCLASS() class PROJECTBLUELANDS_API UPlayerStateSave : public USaveGame { GENERATED_BODY() public: UPlayerStateSave(); public: UPROPERTY() FString SaveSlotName; UPROPERTY() int32 SaveIndex; UPROPERTY() int32 Level; UPROPERTY() int32 nowExp; UPROPERT..
-
블루아카이브 루트슈터 팬게임 프로젝트(20) - 인벤토리 아이템 판매 시스템루트슈터 프로젝트 2024. 1. 21. 22:52
void APlayerCharacter::OpenInventory() //인벤토리 열기 { APlayerController* con = Cast(Controller); if(con && !isOpenInv && inventoryUI) { inventoryUI->SetVisibility(ESlateVisibility::Visible); con->SetShowMouseCursor(true); con->SetInputMode(FInputModeUIOnly()); isOpenInv = true; //con->SetPause(true); } else if(con && isOpenInv && inventoryUI){ inventoryUI->SetVisibility(ESlateVisibility::Hidden); c..
-
블루아카이브 루트슈터 팬게임 프로젝트(19) - 체력 회복 시스템루트슈터 프로젝트 2024. 1. 21. 01:13
안녕하세요. 이번에는 플레이어의 체력 회복 시스템에 대해 구현해보았습니다. 콜오브듀티와 같은 게임들을 보면 플레이어가 체력을 입은 후 일정시간 데미지를 입지 않으면 체력이 서서히 회복됩니다. 제 게임 또한 자동회복 시스템을 구현해 보기로 하였습니다. 제 게임에서는 플레이어가 3초간 피해를 입지 않았다면 초당 최대 체력의 10%를 회복하도록 해보겠습니다. PlayerCharacter.h public: bool bCanRegen = true; UFUNCTION() void PlayerHPRegen(); 플레이어 클래스에 현재 체력을 리젠할 수 있는지 표시해주는 bool 변수, 그리고 플레이어 체력을 리젠할 수 있게 해주는 함수를 하나 선언해줍니다. 이 함수에 UFUCTION()을 붙여준 이유는 밑에서 서술하..
-
블루아카이브 루트슈터 팬게임 프로젝트(18) - 적 스폰 시스템 & 웨이브 게임모드(3)루트슈터 프로젝트 2024. 1. 20. 01:02
안녕하세요. 오늘은 웨이브, 남은 적 정보를 UI로 보여주고 웨이브 간 시간차를 설정해서 모든 적을 처치하면 5초 후 다음 웨이브가 시작되도록 하겠습니다. WaveWidget.h UCLASS() class PROJECTBLUELANDS_API UWaveWidget : public UUserWidget { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr WaveRound; UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) TObjectPtr EnemyLeft; void RefreshWidget(int Wave, int enemyLeft); }; 웨이브 정보들을 보여주..
-
블루아카이브 루트슈터 팬게임 프로젝트(18) - 적 스폰 시스템 & 웨이브 게임모드(2)루트슈터 프로젝트 2024. 1. 19. 01:55
안녕하세요. 오늘은 적 스폰 시스템을 좀 더 다듬어 보겠습니다. 그 이전에 적을 스폰하여 AI를 빙의시킬때 오류가 발생하는 경우가 있었는데요. AI를 프로그래밍 할 때 주의할 점이 있습니다. AEnemyAiController.cpp void AEnemyAiController::BeginPlay() { Super::BeginPlay(); playerPawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0); //SetFocus(playerPawn); if(AIBehavior && playerPawn) { RunBehaviorTree(AIBehavior); GetBlackboardComponent()->SetValueAsVector(TEXT("PlayerLocation"..