언리얼 엔진 5 81

[언리얼 엔진 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 ..

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

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

[언리얼 엔진 5] 언리얼 엔진에서의 OnTriggerEnter (OnComponentBeginOverlap)

유니티로 게임을 개발해본 사람은, OnTriggerEnter 혹은 OnCollisionEnter를 사용하여 무언가 이벤트가 발생하도록 해본 경우가 많을 것이다. 언리얼 엔진에서는 비슷한 것으로 OnComponentBeginOverlap 델리게이트가 있다. 여기서 Component는 Box/Capsule/Sphere Collision이 될 수 있겠다. 델리게이트라는 단어가 생소하다면, 이벤트라고 이해하면 된다. https://docs.unrealengine.com/5.3/ko/delegates-and-lamba-functions-in-unreal-engine/ 델리게이트 C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형입니다. docs.unrealengine.com UnityEvent를 사..

[언리얼 엔진 5] BlueprintNativeEvent에 대해서, 사용 시 주의할 점

https://docs.unrealengine.com/5.3/ko/ufunctions-in-unreal-engine/ UFunctions게임플레이 클래스용 함수 생성 및 구현에 대한 개요입니다.docs.unrealengine.com함수 지정자 목차에 관련 내용이 있다.   함수에 UFUNCTION(BlueprintNativeEvent) 매크로를 달아주면, 함수의 기본 정의는 C++ 클래스에 구현해놓고 블루프린트에서 이를 확장, 또는 대체하는 것이 가능하다.   기본 C++ 문법의 가상함수와 비슷하다. 기본적인 구현이 되어있지만, 서브클래스에서 오버라이딩 할 수 있다.   UFUNCTION(BlueprintImplementableEvent)가 C++ 코드에서는 헤더에 함수의 선언만 해놓고, 그 구현을 블루..

[언리얼 엔진 5] 애니메이션 사운드

언리얼 엔진에서 사용되는 전통적인 사운드 시스템은 사운드 큐이다.https://docs.unrealengine.com/4.26/ko/WorkingWithMedia/Audio/SoundCues/Editor/ 사운드큐 에디터사운드큐 노드 기반 오디오 애셋을 셋업하고 편집하는 데 사용되는 툴 사용 안내서입니다.docs.unrealengine.com   새로운 사운드 큐를 생성하고, 사운드 큐 에디터 내부에 Wave Player 노드를 만들어 Output에 연결해 줌으로써 간단한 사운드 재생 에셋을 만들 수 있다.  Output 노드의 디테일 패널에서 사운드의 볼륨, 피치 조절 등의 후처리를 할 수도 있다.   언리얼 엔진 5로 넘어오면서 새로 생긴 시스템이 메타 사운드이다.https://docs.unreale..

[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를 사용하였다.   먼저 에임 오프셋 안..