지난번 오류는 일단 보류!
지난 글에서 마지막에 움직임을 멈추면 몸이 앞으로 더 나아가려다가 뒤로 당겨지는 현상을 발견했었고 이를 해결하려 했었다. 팀원들과 상의한 결과 일단 이것은 보류하고 다른 기능을 먼저 구현하는 것이 좋겠다는 의견이 나왔고 일단 다른 기능을 구현해 보도록 하자! 사실 주말 동안 LagCamera라는 SpringArm 컴포넌트의 기본 기능을 적용하는 등 여러 변경이 있었다.(이 마저도 저 기능이 있는지도 모르고 코드로 구현하려고 발악을 하다가 나중에서야 알게 되었다.)
오늘은 Attack을 한번 구현해보려고 한다.
게임이 본디 멀티플레이 3vs3 캐주얼대전 게임을 목표로 만들고 있기에 당연하게 구현되어야 할 로직이 바로 Attack 로직이다. 기본적인 골자는 적을 공격해서 기절치를 쌓고 기절치가 일정치 쌓이게 되면 캐릭터가 기절하게 되고 기절한 캐릭터를 끌고 다니는 등의 스타일로 전투를 구현해보려고 한다. 가장 처음에는 맨손으로 시작하지만 게임시간이 일정시간만큼 진행됨에 따라 무기가 맵에 스폰하고 각 무기별로 고유한 스탯을 가지고 있게끔 구현하고자 하면 가장 필요한 것이 그러한 데이터를 모은 DataTable을 만드는 것이다.
USTRUCT를 이용한 DataTable
물론 Character의 헤더파일에 USTRUCT를 정의해주고 Character를 인클루드 해서 사용하는 것이야 가능하지만 Character에는 그 밖에도 다양하고 복잡한 코드들이 얽히고설켜있기에 안정성과 유지보수를 위해서 새로운 클래스를 정의해 줄 것이다. 어차피 DataTable에 사용할 구조체를 만들기에 부모 클래스는 과감히 NONE으로 설정해서 기본 코드들을 작성해 주도록 하자
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "TTWeaponData.generated.h"
USTRUCT(BlueprintType)
struct FTTWeaponData : public FTableRowBase
{
GENERATED_BODY()
public:
FTTWeaponData ();
}
None을 부모클래스로 클래스를 생성한다면 기본 코드들이 누락되어 사용하기 어려울 것이다 그렇기에 다음 처럼 기본 토대가 될 코드들을 작성해주고 기존에 있던 필요 없는 코드들(ex : class 관련)을 싹 지워주는 것이 편하다. 이제 DataTable에 사용해 줄 변수를 선언해 주고 cpp에서 해당 변수들을 기본값으로 초기화해주기만 하면 USTRUCT의 설정은 끝이 나게 된다. 이제 구조체에 들어갈 변수들을 생각해줘야 하는데 일단 무기의 이름, 무기 별 기절치, 무기 별 넉백 수치, 무기 별 공격 딜레이 등이 있을 수 있겠다. 이렇게 구조체 클래스를 따로 작성하면 좋은 점으로는 나중에 추가할 변수가 생기더라도 이 클래스에 추가해 주면 되기에 일단은 생각 나는 데로 넣어준다. 내일 이 구조체를 활용한 DataTable을 작성하고 실제로 Attack함수를 구현해 보도록 하겠다.
'unreal 5기' 카테고리의 다른 글
| 251218 언리얼엔진 본캠프 91일차 멀티플레이 팀프로젝트6 (1) | 2025.12.18 |
|---|---|
| 251217 언리얼엔진 본캠프 90일차 멀티플레이 팀프로젝트5 (0) | 2025.12.17 |
| 251211 언리얼엔진 본캠프 86일차 멀티플레이 팀프로젝트3 (0) | 2025.12.11 |
| 251210 언리얼엔진 본캠프 85일차 멀티플레이 팀프로젝트2 (0) | 2025.12.10 |
| 251209 언리얼엔진 본캠프 84일차 멀티플레이 팀프로젝트1 (2) | 2025.12.09 |