언리얼 엔진 5/개발 일지 65

[UE5] 블루아카이브 TPS게임 개발일지 (14) - 데미지 판정 구현

언리얼 엔진의 Actor 클래스에는 데미지를 받는 함수가 기본적으로 정의되어있다. https://docs.unrealengine.com/5.3/en-US/API/Runtime/Engine/GameFramework/AActor/TakeDamage/ AActor::TakeDamageApply damage to this actor.docs.unrealengine.com 그 시그니쳐는 이러하다.virtual float TakeDamage( float DamageAmount, struct FDamageEvent const & DamageEvent, class AController * EventInstigator, AActor * DamageCauser) 액터가 데미지를 받게 하고자 한다면, ..

[UE5] 블루아카이브 TPS게임 개발일지 (13) - HP 시스템 제작 + SRP

앞서 라인트레이싱으로 적을 맞추는 것을 구현했으므로, 이제 적이 데미지를 받게 할 차례이다.이에 앞서 소개하고 싶은 소프트웨어 디자인 원칙이 있는데, SRP(Single Responsibility Principle)이다.즉 단일 책임 원칙으로, 한 클래스는 한 가지 책임만 갖게 하도록 하는 것이다. (역할의 분리) 적의 HP에 대한 정보는 물론 적의 성분이므로, Enemy.h에 정의하는게 맞을 수도 있다.하지만 이후에 프로젝트가 점차 커지게되면, Enemy 클래스는 공격, 행동, HP를 비롯한 스탯 등 많은 여러가지 역할을 맡게될 수 있다.  이렇게 한 클래스가 지나치게 많은 역할, 즉 책임을 맡을 경우 추후 유지보수가 어려워질 수 있다.    따라서 스탯 관련 데이터는 별도의 클래스에 구분하도록 하였다..

[UE5] 블루아카이브 TPS게임 개발일지 (12) - 크로스헤어 제작

이어서 조준선을 제작할 것이다. 언리얼 엔진에서 UI를 만들기 위한 도구는 UMG이다.https://docs.unrealengine.com/5.3/ko/umg-ui-designer-quick-start-guide-in-unreal-engine/ UMG UI 디자이너 퀵스타트 가이드언리얼 모션 그래픽 사용을 시작합니다.docs.unrealengine.com   UMG를 화면에서 사용하기 위해서는 우선 블루프린트를 만들어야 한다.      좌측 Palette 패널에서 필요한 UI들을 좌측 하단 Hierarchy 혹은 비주얼 디자이너(가운데 큰 화면)으로 가져올 수 있다.  화면 구성에 대해서는 여기를 참고하자.https://docs.unrealengine.com/5.3/ko/widget-blueprints-..

[UE5] 블루아카이브 TPS게임 개발일지 (11) - 라인 트레이싱

이제 사격 시 라인 트레이싱을 통해 명중 여부를 판별하는 코드를 작성할 것이다. 일반적인 생각으로는 탄환이 총구에서 나가는 것이 맞지만, 게임 로직의 면에서는 조금 다르다. 탄환은 카메라 시점을 기준으로 앞으로 쭉 뻗어나가야 한다. TPS 게임이든, FPS 게임이든 총구의 방향은 정면이 아닌, 살짝 기울어진 경우가 대부분이다.따라서 라인트레이싱을 총구의 방향 그대로 하면 화면 정중앙에 적을 맞추고 쏴도 맞지 않는 불합리한 경우가 생긴다. 따라서 라인트레이싱의 시작점을 카메라의 위치(TPS게임이므로 살짝 더 앞)으로,종료점을 시작점 + 카메라의 정면 벡터 * 사거리로 할 예정이다. 이어서 코드를 살펴보도록 하자. void AKannaCharacter::Fire() // 여기서는 상태 전환, 애니메이션만 재..

[UE5] 블루아카이브 TPS게임 개발일지 (10) - 사격 기능 구현 준비 작업 + DIP

사격 애니메이션까지는 만들어 두었으므로, 실제로 총이 발사되는 메커니즘을 만들고자 한다. 우선 발사를 구현하는 데에는 두가지 방법이 있다. 라인 트레이싱(Line Tracing)과 투사체(Projectile)이다. 오버워치를 해본 사람은 히트스캔과 투사체라는 용어가 익숙할 것이다.투사체는 여기서의 투사체와 같고, 언리얼 엔진에서 히트스캔을 구현하는 방법이 라인 트레이싱이라고 할 수 있다. 언리얼의 라인 트레이싱은 유니티의 레이캐스팅(RayCast)과 동일하다. 본 프로젝트에서는 칸나의 일반 사격은 라인 트레이싱으로, EX스킬은 투사체로, 적의 사격은 투사체로 구현할 생각이다.아무래도 적의 공격을 받을 땐 실제로 총알이 날아오는게 보여야 게임이 더 재밌을 것 같기 때문이다. 물론 바로 이것부터 작업할 것은..

[UE5] 블루아카이브 TPS게임 개발일지 (9) - 근접 공격 히트박스 구현

F를 누르면 펀치와 킥 중 하나가 랜덤으로 나가는 것까지 구현했었다. 적 모델링을 임포트한 김에, 근접 공격의 판정을 만들어보았다.  아래 이미지는 현재 펀치와 킥 모션이다. 각각 왼손, 오른발로 공격한다.   따라서 이 두 부위에 히트박스를 만들어주어야 한다. 히트박스는 블루프린트에서든 C++에서든 만들 수 있는데, 이번엔 C++로 만들어보았다. 헤더에 선언한 USphereComponent 포인터. USphereComponent는 구형 콜라이더이다. 즉 히트박스이다.UPROPERTY(EditDefaultsOnly, Category = Hitbox)USphereComponent* PunchHitbox;UPROPERTY(EditDefaultsOnly, Category = Hitbox)USphereCompo..

[UE5] 블루아카이브 TPS게임 개발일지 (8) - 적 모델링 임포트

작중 적으로 등장할 캐릭터는 원작의 최종장 내용과 마찬가지로 카이저 PMC이다.   그런데 칸나의 3d 모델링은 부스에서 구할 수 있었지만, 아무리 찾아봐도 카이저 PMC 병사의 모델링은 구할 수 없었다.그래서 비슷한 모델링을 찾기 위해 sketchfab에서 cyborg 태그로 검색해보았다.  https://sketchfab.com/3d-models/security-cyborg-94ea8c717c374e3fa8aaa7549235b323 Security Cyborg - Download Free 3D model by fletcherkinnear - SketchfabOpen with QR Code: Scan this code to open the model on your device, then, tap on ..

[UE5] 블루아카이브 TPS게임 개발일지 (7.5) - 사격 애니메이션 추가(Additive Animation)

(개발일지 7편이 글이 너무 길어져서 분리)  이제 발사 애니메이션을 만들 차례이다.현재 권총 조준 애니메이션은 Anim Starter Pack의 것을 사용하고 있는데, 아쉽게도 여기에는 권총의 사격 애니메이션은 들어있지 않다. 그래서 조준 애니메이션을 베이스로 팔꿈치, 손목, 허리 뼈대를 조금 조작하여 직접 만들었다. 참고로, 사격 애니메이션 시퀀스의 디테일 패널에서도 Additive Setting을 아까 에임 오프셋 포즈를 만들 때와 비슷하게 설정해주어야 한다.(다만 Additive Anim Type는 Local Space로) 자세한 내용은 후술하도록 하겠다. 그리고 이 애니메이션 시퀀스로 애니메이션 montage를 만들었다. 여기서 Blend Time을 0으로 해둔 것을 볼 수 있다.  사격을 한다..

[UE5] 블루아카이브 TPS게임 개발일지 (7) - Aim Offset

지난 시간에는 조준한 채로 좌우 회전 시 캐릭터도 같이 회전하는 것까지 작업했었다.  이번에는 조준한 채로 상하 회전 시 그 방향을 조준하도록 하였다.  이를 구현하기 위해서는 Aim Offset을 활용해야 한다.https://docs.unrealengine.com/5.3/ko/creating-an-aim-offset-in-unreal-engine/ 에임 오프셋 만들기에임 오프셋을 사용하여, 캐릭터가 마우스 또는 컨트롤러 방향으로 무기를 조준하도록 합니다.docs.unrealengine.com  Aim Offset과 Aim Offset 1D가 있는데, 축이 2개이냐 1개이냐의 차이이다. 현재 필요한 변수는 시점의 상/하 방향 하나 뿐이므로, Aim Offset 1D를 사용하였다.   먼저 에임 오프셋 안..

[UE5] 블루아카이브 TPS게임 개발일지 (6) - TPS 애니메이션 (Layered Blend, Blend Space)

지금까지 조준 기능이 카메라 줌 인 부분만 구현되어있었다. 이번에는 조준한 채로 걸어다닐 수 있고, 카메라를 좌우로 돌리면 그 방향을 조준하도록 하였다.   먼저 조준한 채로 걸어다니는 애니메이션을 만들었다. 언리얼 엔진 마켓플레이스에는 에픽게임즈에서 만든 여러 애니메이션이 들어있고, 무료인 AnimStarterPack 에셋이 있다. 그 안에는 라이플을 조준한 채로 앞, 뒤, 좌, 우 4방향으로 걷는 애니메이션이 있다.현 캐릭터와 달리 권총이 아닌 라이플을 들고있는 애니메이션이기는 하지만, 필요한 것은 하체 애니메이션 뿐이므로 그것을 사용하기로 했다.    이제 플레이어의 이동 방향에 따라 4방향 애니메이션이 적절히 섞여서 재생되어야 한다.이를 위해 블렌드 스페이스를 이용하였다.   https://doc..