강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

Ho Y님의 프로필 이미지
Ho Y

작성한 질문수

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

2강 캐릭터와 입력 시스템

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

작성

·

28

0

// Movement
    GetCharacterMovement()->bOrientRotationToMovement = true;
    GetCharacterMovement()->RotationRate = FRotator(0.f, 0.f, 0.f);
    GetCharacterMovement()->JumpZVelocity = 700.f;
    GetCharacterMovement()->AirControl = 0.35f;
    GetCharacterMovement()->MaxWalkSpeed = 500.f;
    GetCharacterMovement()->MinAnalogWalkSpeed = 20.f;
    GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;
image.png

RotationRate가 회전속도라고 이해했고 값을 바꿔봐도 변화가 안보여서 Yaw값을 0.f로 설정하고 테스트해봤는데 똑같이 회전이 됐습니다. 블루프린트 클래스도 확인해봤는데 여기서는 0으로 되어있습니다.

image.png

디버깅 해봤을 때 CharacterMovementComponent의 PhysicsRotation함수에서 위 사진처럼 RotationRate가 Yaw값으로 360이 들어가고 있었습니다.

Charater의 BeginPlay에서 로그를 찍어서 값을 확인해보니 여기서는 0으로 들어가는데 그럼 이후에 값이 다시 360으로 세팅되는 건가요? RotationRate 조정해보고 싶은데 어떻게 해야 되는지 궁금합니다.

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

테스트해봤을 때 딱히 문제를 못 찾았습니다.
0이 되면 캐릭터는 회전하지 않아야 합니다.
아마도 생성자로직을 수정한 후 라이브 코딩으로 진행해서 변경사항이 반영이 안된 것으로 보입니다.
에디터를 끄고 다시 빌드해보시겠어요?

Ho Y님의 프로필 이미지
Ho Y
질문자

해결됐습니다. SetCharacterControlData에서 세팅하고 있었는데 코드를 잘 확인하지 않았던 것 같습니다. 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. Ho Y님.

CharacterMovementComponent의 RotationRate와 관련하여 혼란스러워 하시는 부분에 대해 설명드리겠습니다.

RotationRate는 실제로 캐릭터가 회전할 때의 회전 속도를 결정합니다. 특히 bOrientRotationToMovement가 true로 설정되어 있으면, 이동 방향에 따라 캐릭터가 자동으로 회전하도록 만들어줍니다. 이 경우 RotationRate의 Yaw 값이 캐릭터의 회전 속도에 중요한 역할을 하게 됩니다.

질문에서 제시하신 로그가 특정 함수에서 RotationRate가 360으로 설정되는 것을 관찰하셨다고 했는데, 이는 아마도 제작하신 코드 외부(예: 엔진 내부 코드 또는 다른 설정)에서 RotationRate가 초기화되고 있을 가능성이 있습니다. 언리얼 엔진은 내부적으로 여러 가지 시스템이 연관되어 작동하기 때문에, 아래의 방법으로 문제를 해결하는 것을 권장드립니다.

  1. Blueprint 및 Default Settings: 블루프린트 설정 및 Default 편집 설정에서 RotationRate가 설정되어 있는지 확인합니다. 프로젝트 설정에서 CharacterMovementComponent 속성이 초기화되는지를 꼼꼼히 점검하세요.

  2. BeginPlay 이후 설정 코드 검사: BeginPlay 이후의 설정 코드에서 원치 않는 값으로 RotationRate가 변경될 수 있으니, 관련된 코드를 확인합니다.

  3. Debug 사용: 디버그를 사용하여 CharacterMovementComponent 초기화 및 설정 중간에 로그를 찍어, 어디에서 값이 변경되는지를 추적하시는 것도 유용할 것입니다.

한편, 두 번째 이미지에 제시된 GetDeltaRotation 함수는 실제로 RotationRate를 사용하는 부분이므로, 이 함수가 어떻게 호출되는지를 추적하는 것도 문제 해결에 중요한 단서가 될 것입니다.

관련된 주제를 다룬 유사 질문들입니다:
- C++ 코드에서 캐릭터 컴포넌트 설정 이유
- Dell Time과 관련된 질문

이들의 내용을 참조하여 직접 코드를 비교하거나 점검하는 것이 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Ho Y님의 프로필 이미지
Ho Y

작성한 질문수

질문하기