inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

bUseAccelerationForPaths를 C++로 활성화시키고 싶습니다.

해결된 질문

540

김준우

작성한 질문수 1

0

안녕하세요. 섹션1의 캐릭터 컨트롤 설정 수업을 듣고 캐릭터를 wasd말고 NavMesh를 이용하여 클릭으로 캐릭터를 움직이고 싶어서 제작하고 있습니다.

그런데 Nav Movement의 UseAccelerationForPaths를 true로 변경시켜야 캐릭터의 애니메이션이 움직인다는 것을 알게 되었습니다. blueprint로는 바꿀 수 있지만 C++로는 도저히 바꾸는 방법을 찾지 못하여 물어보게 되었습니다.

어떻게 하면 C++코드를 이용하여 UCharacterMovementComponent클래스의 bool변수인 bUseAccelerationForPaths를 true로 변경시키고 ACharacter클래스에 변경된 UCharacterMovementComponent 클래스를 성공적으로 적용시킬 수 있을까요?

unreal-engine ue-blueprint 언리얼-c++

답변 2

2

이득우

안녕하세요. 출장 중이라서 답신이 늦었습니다.
이 문제는 직접 프로젝트를 만들어 테스트를 해봐야 답변이 가능했네요.
우선 문의주신 UseAccelerationForPaths 속성은 설계상으로 C++에서 변경할 수 없도록 protected로 선언되어 있습니다.
따라서 이의 기본 값을 변경하기 위해서는 기존의 CharacterMovementComponent를 상속받은 새로운 무브먼트 컴포넌트를 만들어주세요. 이를 MyCharacterMovementComponent라고 하겠습니다.

UMyCharacterMovementComponent::UMyCharacterMovementComponent()
{	
    bUseAccelerationForPaths = true;
}


이렇게 만든 새로운 무브먼트 컴포넌트가 우리 캐릭터의 기본 컴포넌트가 되도록 ABCharacterBase클래스를 변경해주어야 합니다. 이 때는 수업에서 다루지 않는 인자 있는 생성자를 써야 합니다.
생성자 선언 및 구현을 다음과 같이 변경해주세요.

.h 헤더파일의 생성자 선언 ( 기존 생성자 선언을 대체해주세요 )

 AABCharacterBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());


.cpp 소스파일의 생성자 구현

#include "MyCharacterMovementComponent.h"

AABCharacterBase::AABCharacterBase(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer.SetDefaultSubobjectClass<UMyCharacterMovementComponent>(ACharacter::CharacterMovementComponentName))
{
이하는 기존 코드와 동일하게 유지 


이렇게 생성자코드를 변경하면 다음과 같이 기본 값이 설정되어 있는 것을 확인할 수 있습니다.
image

1

김준우

문제가 잘 해결되었습니다. 좋은 답변 감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

C++에서 UCharacterMovementComponent 클래스의 bUseAccelerationForPaths 변수를 true로 변경하고, ACharacter 클래스에 변경된 UCharacterMovementComponent를 적용하는 방법에 대해 알려드릴게요.

먼저, UCharacterMovementComponent 클래스의 bUseAccelerationForPaths 변수는 UCharacterMovementComponent.h 파일에 선언되어 있습니다. 이를 사용하기 위해서는 해당 클래스를 상속받고 있는 클래스에서 해당 변수를 변경해야 합니다.

아래는 C++ 코드에서 bUseAccelerationForPaths 변수를 true로 변경하는 예시입니다.

UCLASS()
class YOURCHARACTERCLASS_API UYourCharacterMovementComponent : public UCharacterMovementComponent
{
    GENERATED_BODY()

public:
    // 생성자 등 필요한 내용 추가
    
    virtual void ApplyPathFollowingVelocity(float DeltaTime) override
    {
        Super::ApplyPathFollowingVelocity(DeltaTime);
        
        bUseAccelerationForPaths = true;
    }
};

위의 코드에서 UYourCharacterMovementComponent는 UCharacterMovementComponent를 상속받는 클래스로, ApplyPathFollowingVelocity 함수를 오버라이딩하여 bUseAccelerationForPaths 변수를 true로 변경하고 있습니다. 이렇게 변경된 클래스를 ACharacter 클래스에서 사용하면 됩니다.

AYourCharacter::AYourCharacter()
{
    // 생성자 등 필요한 내용 추가
    
    GetCharacterMovement()->SetMovementComponentClass(UYourCharacterMovementComponent::StaticClass());
}

위의 코드에서 AYourCharacter는 ACharacter 클래스를 상속받는 클래스로, GetCharacterMovement 함수를 통해 UCharacterMovementComponent를 가져와서 SetMovementComponentClass 함수를 통해 변경된 UYourCharacterMovementComponent 클래스를 적용하고 있습니다.

이렇게 하면 C++ 코드를 이용하여 UCharacterMovementComponent 클래스의 bUseAccelerationForPaths 변수를 true로 변경하고, ACharacter 클래스에 변경된 UCharacterMovementComponent를 성공적으로 적용할 수 있습니다.

추가적인 도움이 필요하시다면 언제든지 물어보세요!

0

김준우

답글을 보고 젹용시켜보려 했지만 UCharacterMovementComponent에는 SetMovementComponentClass 함수와 ApplyPathFollowingVelocity 함수가 존재하지 않는다는 에러가 발생합니다. 현재 저는 언리얼5.1.1버전을 이용하여 작업중인데 에러가 뜨는 이유를 모르겠습니다.

무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.

0

48

2

12강 행동트리에서 질문이 있습니다.

0

52

1

위젯 사이즈랑 위치 질문드려요.

0

82

3

행동트리의 데코레이션 관련하여 질문이 있습니다.

0

94

3

VS 2026 의 문제일까요?

0

492

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

96

3

캐릭터가 움직이지 않습니다.

0

184

4

쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.

0

62

2

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

0

95

2

7강에 나오는 생성자에 대해서 궁금합니다.

0

79

2

6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.

0

73

2

3강을 마무리 하며, 카메라가 움직이지 않습니다.

0

71

2

Use Controller Rotation 옵션값이 궁금합니다.

0

84

2

3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.

0

66

2

PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.

0

78

2

13강 UpdateStat 부분에서 문제를 겪고 있습니다.

0

64

2

BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.

0

66

1

콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점

0

73

2

CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.

0

115

2

언리얼 공부방법에 대해 질문드립니다.

0

87

2

4강 에서 이상한 그림자가 남습니다.

0

48

1

2강에서 카메라 회전안되시는분 참고

2

92

2