Unreal Engine - Main Menu (흐름 위주의 정리)
·
Unreal Engine
이전에 관련 글을 정리했었는데, 다시 구현하면서 보니 조금 이해가 안되는 부분이 중간 중간에 있어서 흐름 위주로 다시 글을 정리해보았다. 이전 글https://gbleem.tistory.com/79 Unreal Engine - Main Menu UI (Start, Restart)1. 디자이너 탭 구성아래와 같은 계층구조로 구성  2. Menu  전용 맵게임이 시작하면 Menu Level에서 위에서 만든 UI가 실행된 후 Start 버튼을 누르면 게임이 시작되는 로직으로 제작할 것이다.새로gbleem.tistory.com 1. 메뉴용 맵과 WBP메뉴의 바탕이 될 레벨을 하나 만들고위젯 BP를 만들어서 게임 시작 버튼을 만들면 된다. 이후 Default 레벨을 해당 레벨로 지정하면 된다. 1. UI 만들기 ..
UE5 Issues : ADS (Aim Offset 1D)
·
Unreal Engine
1. 3인칭 시점기본적으로 카메라는 spring arm과 함께 존재하는 것이 조절하기 편리하다.특히 각도와 위치 관련된 부분에 있어서 조절할 때 spring arm 의 offset을 조절하는 것이 더 좋은 방식이다. 우선 아래와 같이 구성을 하게 되었다.상위 컴포넌트는 spring arm 이고 하위 컴포넌트를 child actor로 하였다.child actor로 두면 나중에 GetChildActor를 통해서 가져올 때 편리하기 때문이다.Child Actor에는 Camera를 상속해서 만든 클래스를넣어주면 된다.코드는 아래와 같이 구성하였다.헤더파일//change view componentUPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Component"..
Unreal Engine - Sound play & Effect spawn
·
Unreal Engine
1. Sound Play사운드는 .wav 파일이나 .mp3 파일을 SoundBase로 가져와서 play할 수 있다. 아래와 같이 변수를 선언해 주고//for weapon soundUPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sound")TArray> ShootSound;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sound")TArray> ReloadSound;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Sound")TObjectPtr NoAmmoSound;생성자에서 아래와 같이 ConstructorHelpers로 가져와서 사용하면 된다./..
Unreal Engine - 애님 몽타주
·
Unreal Engine
1. 애님 몽타주애님 몽타주는 특정 애니메이션을 제어하고 다양한 방식으로 재생할 수 있게 해주는 기능이다.아래와 같은 기능들을 주로 사용하게 된다.애니메이션을 특정 슬롯에서 동작할 수 있도록 해주는 기능노티파이를 사용하여 애니메이션 중간에 효과를 줄 수 있는 기능이번에 사용해 본 예시로는 장전 애니메이션과 피격 애니메이션, 구르기 애니메이션에 사용해 보았다.  2. 애님 몽타주 만들기새롭게 애님 몽타주 만들면 아래와 같이 생성이 된다.주요하게 봐야할 점이 slot과노티파이 이다. 2 - 1. slot특정 bone을 기준으로 애니메이션을 나눠서 재생할 수 있게 하는 부분이다.default slot 이라고 검색하면 아래와 같은 노드를 선택할 수 있게 되고 해당 애니메이션은 Default 노드에서 재생되게 된..
Unreal Engine - 캐릭터 앉기 및 구르기
·
Unreal Engine
1. 앉기1 - 1. 애니메이션애니메이션은 Game Animation Sample 프로젝트에서 이주해와서 리타게팅 시켰다.해당 프로젝트 사용할 때 5.4 버전을 다운로드해야 애니메이션 에셋들이 존재하는 것 같다.5.5 버전을 다운받으면 애니메이션이 없었음이후 모션매칭 관련해 정리한 글 을 따라서 진행하였고, Cache pose로 저장했다.Main State 안에서 조건에 따라 crouch가 되도록 수정하였다.crouch 도중 땅에 떨어지면, Locomotion으로 바꾸고 싶은데, 아직 해당 부분은 수정중이다.현재는 crouch 도중 땅으로 떨어져도 crouch 상태가 유지된다.트랜지션 룰은 isCrouch 라는 변수를 조건으로 주었다. (cpp에서 컨트롤하는 변수) 1 - 2. 설정cpp에서 moveme..
Unreal Engine - TSubclassOf & StaticClass
·
Unreal Engine
완벽한 정보는 아닐 수 있다. 개발하면서 겪은 시행착오를 통해 얻은 내용을 정리한 글이다. 1. TSubclassOf주로 이 타입으로 선언하는 변수는 BP를 불러올 때 사용한다. 예를 들어, UI를 만들 때 BP로 만든 위젯 BP를 불러와서 사용하고 싶을때 사용한다.PlayerController에 아래와 같은 변수를 선언하고TSubclassOf HUDWidgetClass;생성자에서 아래와 같이 BP를 불러와서 사용할 수 있다.static ConstructorHelpers::FClassFinderHUDWidgetBP(TEXT("/Game/HJ/UI/WBP_HUD.WBP_HUD_C"));if (HUDWidgetBP.Succeeded()){ HUDWidgetClass = HUDWidgetBP.Class;}이..
Unreal Engine - 총기 반동, 데칼, 탄피 효과
·
Unreal Engine
1. 총기 반동 구현가장 쉬운 방법은 PlayerController의 AddPitchInput과 AddYawInput을 사용하는 방식이다.CalculateRecoilValue 함수는 Current Weapon이 가진 변수를 가져와서 캐릭터 변수에 저장하는 동작을 하는 함수이다.void APlayerCharacter::Recoil(){ APlayerCharacterController* PlayerCharacterController = Cast(GetController()); if (PlayerCharacterController) { CalculateRecoilValue(); float PitchRecoil = FMath::RandRange(MinPitchRecoil, MaxPitchRecoil); f..
UE5 Issues : 총기 스폰 및 포인터
·
Unreal Engine
이번 글의 주제는 인벤토리에 가지고 있는 총기와 현재 장착하고 있는 총기를 연동하는 방식에 대한 내용이다. 1. 전체적인 로직UI의 동작왼쪽은 무기를 획득하기 전에 모습이다. 이때는 UI의 버튼을 클릭하여도 아무 일도 발생하지 않는다.오른쪽은 무기를 획득한 후의 모습이다.무기는 각자 고유한 int32 변수를 가지고 있어, 어떤 무기인지 식별할 수 있게 하였다.무기를 획득하게 되면, GameInstance가 가지고 있는 TArray WeaponInventoryItem; 에 해당 인덱스를 저장하게 된다.UI 에서는 (GameState) 해당 인덱스를 체크해서, 존재하는 인덱스라면 오른쪽 처럼 UI에 존재하는 이미지의 투명도를 1로 만들어 보이게 해준다.이후 투명도가 1인 버튼은 클릭이 가능하게 되고, 클릭하..
UE5 Issues : 인벤토리 UI
·
Unreal Engine
이번 구현의 목적은 우리가 Tab키를 눌렀을 때, 인벤토리 UI가 켜지고 그 때 버튼을 클릭하여 해당 아이템을 사용하거나 장착하는 것이다. 1. 인벤토리 UI 관련 이슈Tab 키를 누른 상태에서 UI가 켜져있고, 땐 상태에서 UI가 꺼지도록 구현을 하고 싶어서 처음에는 Triggered된 순간 ShowInventory를 실행하고, Completed된 순간 StopShowInventory 를 실행하는 로직으로 시작했다.if (PlayerController->ShowInventoryAction){ EnhancedInputComponent->BindAction(PlayerController->ShowInventoryAction, ETriggerEvent::Started, this, &APlayerCharac..
UE5 Issues : 캐릭터 아이템 획득 로직 구현
·
Unreal Engine
이번 구현의 목적은 캐릭터가 화면의 중심으로 원하는 아이템을 하나만 선택해서 획득할 수 있도록 하는 것이다.그림으로 나타내면 아래와 같은 느낌이다.말로 정리해 보자면,아이템을 랜덤하게 스폰해주는 상자가 존재이 상자는 collision을 가지고 있어서 해당 collision 안으로 들어가게 되면, 캐릭터의 시점으로 line trace 시작collision 밖으로 나오면 line trace 꺼주기line trace를 통해서 아이템을 peeking 하게되면, 해당 아이템에 UI가 뜨게 되고 획득 가능한 상태가 된다.만약 아이템 peeking이 끝나면, UI도 꺼지고 아이템 획득도 불가능한 상태이후 F키를 누르면 아이템 획득이 가능한 시스템 1. 상자 로직상자의 기본 로직은 다른 조원분이 구현해 주셨고, 나는 ..