UE5 60

[UE5] 블루아카이브 TPS게임 개발일지 (57) - 사망 연출 제작 (Geometry Collection)

HP가 0이 될 시 사망하는 연출을 만들어볼 것이다. 원작 설정 상 캐릭터들은 총을 좀 맞아도 죽지 않지만, 본 게임에서는 좀 밋밋할 것 같아 실제로 죽는 연출을 만들 것이다.  사망 연출을 위해 필요한 것은, 뭐니뭐니 해도 헤일로가 깨지는 연출이다.   언리얼 엔진에서 Destructible Mesh를 구현하기 위해서는 Geometry Collection을 사용하면 된다.에디터 좌측 상단의 Mode를 Selection에서 Fracture Mode로 바꾸고, 필드에 헤일로 스태틱 메시를 배치한뒤, New를 눌러 새로운 지오메트리 컬렉션을 만들어주었다. 그리고 좌측의 Fracture 탭의 Uniform 방식을 선택한 뒤, Fracture 버튼을 눌러 메시를 조각내주었다.ViewSettings의 Min Vo..

[UE5] 블루아카이브 TPS게임 개발일지 (56) - EX 스킬 제작 4

이번엔 busted 이펙트를 만들 것이다. 이전에 카이저 PMC 병사 가슴팍의 마크를 구현하기 위해 3d Text 플러그인을 사용한 바가 있다.https://ciel45.tistory.com/19 블루아카이브 TPS게임 개발일지 (8) - 적 모델링 임포트작중 적으로 등장할 캐릭터는 원작의 최종장 내용과 마찬가지로 카이저 PMC이다. 그런데 칸나의 3d 모델링은 부스에서 구할 수 있었지만, 아무리 찾아봐도 카이저 PMC 병사의 모델링은 구할 수 없ciel45.tistory.com 이번에도 해당 플러그인을 사용하여 busted 3d 텍스트를 만들고, 큐브로 테두리를 만든 다음 스태틱 메시로 변환해주었다.   그리고 만들어진 스태틱 메시에서 머티리얼을 적당히 어울리는 것으로 변경해주었다.  이 busted ..

[UE5] 블루아카이브 TPS게임 개발일지 (55) - EX 스킬 제작 3 (UParticleSystem)

이번엔 총구로 빛이 모이는 연출을 만들 것이다. 언리얼 마켓플레이스의 Infinity Blade: Effects 에셋은 에픽게임즈가 예전에 만든 ios 게임 인피니티 블레이드의 이펙트들이 담긴 에셋이다. 무료이면서 양질의 이펙트들이 많이 포함되어 있다.https://www.unrealengine.com/marketplace/en-US/product/infinity-blade-effects Infinity Blade: Effects in Epic Content - UE MarketplaceInfinity Blade: Effects includes visual effects ranging from fire and smoke to curious lights and magical reactions, all wi..

[UE5] 블루아카이브 TPS게임 개발일지 (54) - EX 스킬 제작 2 + LSP

바로 이전 포스팅에서 ExProjectile을 임시로 만들었는데, ExProjectile도 제대로 C++ 클래스를 만들어 코드 상으로 관리하고자 한다. ExProjectile은 Projectile과 굉장히 비슷하다. Projectile의 거의 모든 특징을 그대로 가진다.  일반적인 생각으로는, ExProjectile은 Projectile의 일종이다. 즉, is-a 관계가 성립하여, ExProjectile은 Projectile을 상속받도록 하는 것이 적절하다. 다만, 여기서 LSP를 고려해볼 필요가 있다.LSP란 리스코프 치환 법칙을 의미한다. 그 의미는 간단히 하자면 다음과 같다. 자식 클래스는 부모 클래스를 대체할 수 있어야한다. 더 직관적으로 표현하자면, 부모 자리에 자식이 들어가도 지장이 없어야 한..

[UE5] 블루아카이브 TPS게임 개발일지 (53) - EX 스킬 제작 1

우선, 칸나가 권총을 들고 있을 땐 EX스킬을 사용할 수 있어야 하고, 소총을 들고 있을 땐 EX스킬을 사용할 수 없어야 한다.KannaCharacter 클래스가 각 무기 종류에 대해 의존성을 가지는 것은 피하려고 한다. 오직 AGun 클래스에만 의존하게 하는 것이 목표이다.따라서 AGun 클래스에 KannaCharacter에서 사용할 여러 프로퍼티를 만들어주었다.// AGun.h 중 일부bool HasExSkill; //EX 스킬을 사용 가능한 총인지bool ExSkillReady; // true 시 다음 발사 시 EX 스킬이 나간다. //KannaCharacter에서 호출할 함수FORCEINLINE virtual void ReadyExSkill() {ExSkillReady = true;} Rea..

[UE5] 블루아카이브 TPS게임 개발일지 (52) - 리팩토링

EX 스킬을 구현하기에 앞서, 한번 더 시간을 들여 프로젝트 전체적으로 리팩토링을 진행해주었다. 먼저, BP_Enemy에서 구현했던 One Shot, Shoot 이벤트를 C++로 만들었다.  블루프린트는 기본적으로 같은 로직을 수행하더라도 C++보다 성능이 떨어지기 때문에, 호출이 빈번한 기능은 C++로 만드는 것이 좋다. One Shot도 그러한 경우이다.void AEnemy::OneShot(){ if (!TargetCharacter) return; // 플레이어를 바라보도록 FRotator DesiredRotation = UKismetMathLibrary::FindLookAtRotation(GetActorLocation(), TargetCharacter->GetActorLocation()); //피..

[UE5] 블루아카이브 TPS게임 개발일지 (51) - EX 게이지 제작

이번엔 EX 스킬 게이지를 만들어 볼 것이다. 10칸으로 나누어진 게이지가 시간의 흐름에 따라 천천히 차는 것을 볼 수 있다. 언리얼 엔진에서 이러한 게이지를 구현하기 위해서는 UProgressBar를 사용하면 된다. 일전에 만들어두었던 KannaTPSOverlay 클래스에 EX 게이지에 해당하는 UProgressBar를 새로 만들었다. //KannaTPSOverlay.h에 변수 추가UPROPERTY(meta = (BindWidget))UProgressBar* ExGauge;UPROPERTY(meta = (BindWidget))UTextBlock* ExNumberText; ExGauge가 그 UProgressBar이다.ExNumberText는 현재 몇 코스트가 찼는지를 나타내기 위한 UTextBlock이..

[UE5] 블루아카이브 TPS게임 개발일지 (50) - 맵 제작

슬슬 개인적으로 제일 어렵다고 느끼는 맵 제작을 할 때가 왔다. 최근 약 1~2주 동안은 계속 레벨디자인 작업만 한 것 같다.  발키리 경찰학교를 구현하기 위해서, 키 이미지를 참고하였다. 건물 전반적으로 푸른 느낌이 나고, 심문실은 건조한 느낌이 들도록 하는 것을 목표로 하였다. 처음에는 무료 에셋만으로 맵을 만들어보려했지만, 한계를 느끼고 언리얼 마켓플레이스에서 경찰서 느낌이 나는 에셋을 구매하였다. https://www.unrealengine.com/marketplace/ko/product/police-station-and-interrogation-room-pack-modular Police Station (Office) & Interrogation Room (Modular), 카테고리 배경 - U..

[UE5] 블루아카이브 TPS게임 개발일지 (49) - 스크린 데미지 효과 적용

현재 만들어져있는 포스트프로세스는 인게임에서 사용하려면 Material Instance로써 들어가야한다. 만든 포스트 프로세스에 우클릭을 하여 Create Material Instnace를 눌러 인스턴스를 만들어, 이름을 PPI_ScreenDamage로 지었다. 그리고 그 인스턴스가 들어갈 곳은 PostProcessVolume의 Post Process Materials 배열 내부이다. C++ 코드에서 머티리얼 인스턴스를 저기에 집어넣고, 플레이어 체력에 따라 Radius를 조정하는 것까지 수행할 것이다. KannaCharacter.h에 다음과 같은 변수를 추가하였다.UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, meta = (AllowPrivateAccess = "..

[UE5] 블루아카이브 TPS게임 개발일지 (48) - 스크린 데미지 효과 (Radial Gradient Exponent)

이번엔 화면 가장자리가 붉어지는 효과를 만들 것이다. 구현하기 위한 방법으로 생각해본 것은 2가지이다.위젯을 이용한다.포스트 프로세스를 이용한다.위젯을 사용하는 쪽이 구현하기에 간편하지만, 데미지의 양에 따라 붉은 면적이 늘어나는 것을 구현하기가 더 어려울 것 같다는 생각이 들었다. 따라서 포스트 프로세스를 이용하기로 하였다.  우선 머티리얼을 생성하고, 좌측 하단 디테일 패널에서 Material Domain을 PostProcess로 지정해주었다. 그리고 SceneTexture 노드와 마스크를 통해 원본 씬의 RGB를 가져온다. 화면의 가장자리만이 붉어야 하므로 RadialGradientExponent 노드를 사용할 것이다.https://docs.unrealengine.com/4.27/ko/Renderi..