inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

3강 캐릭터 컨트롤 설정

스프링암의 Use Pawn Control Rotation적용 질문이 있습니다.

해결된 질문

811

themoon007

작성한 질문수 98

0

Use Pawn Control Rotation을 켜면 컨트롤러 회전값을 해당 컴포넌트의 rotation에 적용한다고 이해했었는데요.

이것만 켜면 마우스로 인한 컨트롤러 회전값 변화가 스프링암에 적용되어 스프링 암이 회전할 거라고 생각했는데

스프링암에 있는 부모의 회전값을 상속받는 옵션을 켜야만 작동이 되는 것을 확인했습니다.

어떤 이유로 스프링암의 부모컴포넌트의 회전값을 상속받아야지만 작동되는지 알수있을까요?

 

반대로 Use Pawn Control Rotation을 끄고 회전값 상속을 하니 무조건 캐릭터의 뒷면만 보게끔 되는것을 확인했습니다. 이러한 동작은 이해가 되었습니다.

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

답변 1

1

이득우

언리얼 엔진의 프레임웍은 단순 기능 온오프가 아닌 경우가 많아 말로 설명하긴 어렵고 코드를 보면서 이해를 해야합니다. 가급적이면 직접 소스 코드를 검색해보는 훈련을 해보시기 바랍니다.

Ctrl+Shift+F를 사용해 UsePawnControlRotation을 검색해보면 다음과 같은 코드를 볼 수 있습니다.

 

if (bUsePawnControlRotation)
{
	if (APawn* OwningPawn = Cast<APawn>(GetOwner()))
	{
		const FRotator PawnViewRotation = OwningPawn->GetViewRotation();
		if (DesiredRot != PawnViewRotation)
		{
			DesiredRot = PawnViewRotation;
		}
	}
}

 

코드를 해석하면 스프링암은 자신을 소유하는 폰의 ViewRotation으로 자기의 최종 목적 회전인 DesiredRotation을 설정합니다.
폰의 ViewRotation은 컨트롤러가 있는 경우 컨트롤러의 컨트롤 회전이되고 없으면 액터(폰)의 회전이 됩니다.

 

FRotator APawn::GetViewRotation() const
{
	if (Controller != nullptr)
	{
		return Controller->GetControlRotation();
	}
	else if (GetLocalRole() < ROLE_Authority)
	{
		// check if being spectated
		for (FConstPlayerControllerIterator Iterator = GetWorld()->GetPlayerControllerIterator(); Iterator; ++Iterator)
		{
			APlayerController* PlayerController = Iterator->Get();
			if (PlayerController &&
				PlayerController->PlayerCameraManager &&
				PlayerController->PlayerCameraManager->GetViewTargetPawn() == this)
			{
				return PlayerController->BlendedTargetViewRotation;
			}
		}
	}

	return GetActorRotation();
}

 

0

themoon007

감사합니다.

말씀듣고 코드 첨부해주신 bUsePawnControlRotation 사용하는 곳을 봤더니

상속을 안 받을 경우, 강제로 LocalRelativeRotation를 DesiredRot에다가 덮어 씌우는 코드가 있네요.

이것 때문인 것 같습니다.

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

0

47

2

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

0

52

1

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

0

82

3

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

0

94

3

VS 2026 의 문제일까요?

0

489

2

에셋참조 블루프린트질문

0

67

2

애님 몽타주 콤보 관련질문

0

70

2

ThirdPerson CDO 에러가 생깁니다.

0

95

3

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

0

182

4

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

0

62

2

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

0

95

2

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

0

78

2

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

0

73

2

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

0

71

2

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

0

84

2

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

0

65

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

47

1

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

2

91

2