분류 전체보기 115

[언리얼 엔진 5] 라이브 코딩 내용이 적용이 안될 때

언리얼 엔진5로 개발을 하다보면 종종 라이브 코딩을 통해 컴파일을 해도 변경사항이 적용이 안될 때가 있다.또한 라이브 코딩으로 컴파일을 해도 엔진을 껐다가 켜면, 변경사항이 적용이 되어있지 않다.  라이브 코딩은 간단한 변경사항을 빠르게 확인하기 위한 것으로, 편리하긴 하지만 다소 불안정한 기능이다. 확실한 컴파일을 위해서는 에디터를 닫고 비주얼 스튜디오에서 컴파일하는 것이 좋다.  변경사항이 적용되지 않을 때 외에도 다수의 클래스를 수정하였을 때, 엔진의 런타임 중 컴파일을 하면 문제가 될 수 있는 부분(애니메이션 블루프린트의 부모 C++ 클래스 등)을 수정했을 시엔 에디터를 닫고 컴파일 해주는 것이 좋다.  비주얼 스튜디오에서 Ctrl + f5(디버그하지 않고 시작)를 누르면 자동으로 컴파일 후 엔진..

[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-..

[언리얼 엔진 5] 프로젝트에 모듈을 추가하는 방법

언리얼 엔진 5의 일부 클래스들은 사용에 앞서 모듈을 추가해주어야 한다.  예를 들어, UWidget은 언리얼 엔진에서 사용할 수 있는 UI를 지원해주는 클래스이다.https://docs.unrealengine.com/5.2/en-US/API/Runtime/UMG/Components/UWidget/ UWidgetThis is the base class for all wrapped Slate controls that are exposed to UObjects.docs.unrealengine.com위의 문서를 보면, References 목차에 Module이 UMG라고 적혀있는 것을 볼 수 있다.이는 UWidget을 사용하기 위해서는 UMG 모듈을 프로젝트에 추가해야 한다는 것을 의미한다.   모듈을 프로젝트..

[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 the AR icon. Op..

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

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