먼저 밑바탕이 될 레벨, 그리고 보스를 준비해보았다.
둘다 에픽게임즈의 고품질 에셋을 활용해보기로 했다.

그리고 이 맵과 어울릴 만한 보스 에셋을 찾아보았는데,

이게 건조하고 묵직한 느낌이 들어 찾아본 무료 에셋 중에서는 제일 잘 어울릴 것 같았다.
대충 배치하고 간단한 AI를 만들어 돌려본 결과, 적은 작업만으로 어느정도 비주얼이 나와주어 만족스러웠다.

다만 오늘 작업 중 예상치 못한 이슈가 있었는데,
보스의 ABP 에셋에서 사용되는 Get Current Acceleration 노드가 기본적으로 플레이어 인풋을 기반으로 계산을 수행하는 탓에,
AI 내비게이션을 통해 움직이는 상황에서는 제대로 계산이 안되는 문제였다.

이를 해결하기 위해 열심히 조사해본 결과, MovementComponent의 Use Acceleration for Path 프로퍼티를 유효로 하면 된다는 글이 있었다.
https://forums.unrealengine.com/t/get-current-acceleration-not-working-for-ai-character/566064
"Get Current Acceleration" Not working for AI Character
Hi everyone, I have an issue where I’m using the function “Get Current Acceleration” inside the AnimBP event graph to know whether the Character is moving or not (this is the default graph inside the ThidPersonCharacter BP). I created a child from th
forums.unrealengine.com
이를 위해 C++ 코드를 수정하려 했는데, 해당 프로퍼티는 C++에선 protected 변수로 지정되어있어, 간단하게 접근해서 값을 바꿀 수 없었다..
다만 찾아보니까 이에 대한 해결방안의 글도 있었다.
https://forums.unrealengine.com/t/access-to-buseaccelerationforpaths-from-c/401046/5
Access to bUseAccelerationForPaths from C++
Hi! It’s simple: Create you own component derived from UCharacterMovementComponent. For example: UCLASS() class MEDIEVALTALES_API UGameCharacterMovementComponent : public UCharacterMovementComponent { GENERATED_UCLASS_BODY() }; Setup this parameter in co
forums.unrealengine.com
요약하면, CharacterMovementComponent를 상속받은 클래스를 새로 만들어서, 거기서 직접 해당 프로퍼티를 수정하고,
이 클래스를 보스 캐릭터의 MovementComponent로 사용하는 방법이다.
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
//...
UCLASS()
class TITAN_API ABossCharacter : public ACharacter
{
GENERATED_BODY()
public:
// Sets default values for this character's properties
ABossCharacter(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
//...
이러한 방식으로 보스 ABP에서 Acceleration이 잘 계산되도록 하였고, 애니메이션도 잘 나오는 것을 확인할 수 있었다.
// BossMovementComponent.cpp
UBossMovementComponent::UBossMovementComponent()
{
NavMovementProperties.bUseAccelerationForPaths = true;
}
// BossCharacter.cpp
ABossCharacter::ABossCharacter(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer.SetDefaultSubobjectClass<UBossMovementComponent>(ACharacter::CharacterMovementComponentName)) // 커스텀 MovementComponent 사용
{
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
작업 내용:
https://github.com/sys010611/Titan/commit/197788981779407673e9e0acdf9d68f42d282cdb
'언리얼 엔진 5 > 액션RPG 게임' 카테고리의 다른 글
| [UE5] 시네마틱 보스배틀 게임 개발일지 (6) - 리팩토링, 데미지 시스템 구현 (0) | 2025.09.28 |
|---|---|
| [UE5] 시네마틱 보스배틀 게임 개발일지 (5) - 플레이어 준비 + 콤보 공격 구현(모션 매칭, GAS) (1) | 2025.09.25 |
| [UE5] 시네마틱 보스배틀 게임 개발일지 (4) - 보스 공격 구현(GAS) (0) | 2025.09.03 |
| [UE5] 시네마틱 보스배틀 게임 개발일지 (3) - 보스 움직임 구현(BT + EQS) (2) | 2025.08.30 |
| [UE5] 시네마틱 보스배틀 게임 개발일지 (1) - 시작 (0) | 2025.08.26 |