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

monstro님의 프로필 이미지
monstro

작성한 질문수

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

간단한 프로젝트에서 포즈 워핑을 연습하던 도중 문제가 발생했습니다.

해결된 질문

작성

·

73

·

수정됨

0

교수님의 강의에 언제나 큰 도움을 얻고 있습니다.

기존의 질문을 GAS 강의에서 작성하였으나, 강의 주제와 맞지 않다고 판단하여 다시 작성하게 되었습니다.

 

제가 겪고 있는 문제를 글로 설명드리기 보다는 직접 보여드리는 것이 나을 것 같아 동영상으로 대체하였습니다.

아래의 링크는 현재 발생하고 있는 문제를 담은 유투브 링크입니다.

https://www.youtube.com/watch?v=SC1bD4pls3U

 

C++ 클래스로 만든 애님 인스턴스에서 파생된 애니메이션 블루 프린트를 사용해

포즈 워핑을 연습하고 있던 도중 영상과 같은 문제가 발생했습니다.

 

가속도에 따라 발을 디디는 속도가 달라지게끔 설계하였지만, 영상처럼 애니메이션이 굳어버리는 문제가 발생하였습니다.

문제가 발생하고 있는 원인을 찾기 위해 로그를 찍어 확인한 결과,

 

LogTemp: Warning: Accelation : X=-2048.000 Y=0.000 Z=0.000

LogTemp: Warning: bHasAccelation : true

LogTemp: Warning: Accelation : X=0.000 Y=0.000 Z=0.000

LogTemp: Warning: bHasAccelation : false

 

문제가 발생하는 시점부터 로그가 위와 같이 찍히는 것을 확인할 수 있었습니다.

Accelation과 bHasAccelation은 다음의 코드에 의해 값이 결정됩니다.

 

Accelation = Movement->GetCurrentAcceleration() * FVector(1.0f, 1.0f, 0.0f);

bHasAccelation = !Accelation.IsNearlyZero(0.001f);

 

제가 생각해본 문제의 원인은 가속도가 MaxAccelation 이상을 넘어가면 가속도를 0으로 초기화하는 것이라고 생각하고 있습니다.

혹시 제가 생각한 것이 문제의 원인이 맞는 것일까요?

만약 맞다면 가속도가 MaxAccelation에 도달했을때 어떻게 값을 조절해야 하는지 궁금합니다.

제가 생각한 부분에서 문제가 없다면, 어느 부분에서 문제가 발생할 수 있는지 알려주시면 감사하겠습니다.

답변 1

1

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

안녕하세요.
전체적인 코드를 볼 수 없어서 올바른 답변이 아닐 수도 있습니다.
보통 모션의 변화를 줄 때는 속력(Velocity)를 사용하는 것이 일반적입니다.
그런데 가속(Acceleration)이라 함은 속력의 변화를 의미합니다. 지정한 속력의 최대치에 도달했을 때 더이상 속력의 변화가 없기에 가속은 0이 된 것으로 보여지는데, 가속 값으로 모션의 변화를 준다면 말씀하신대로 0이 되어 정지되는 상태가 되는게 아닌가 유추해봅니다.

monstro님의 프로필 이미지
monstro
질문자

블루 프린트로 작성된 코드를 저 나름대로 C++로 옮기는 과정에서 문제가 발생하는 것 같습니다.

언급해주신 대로 가속도 부분을 면밀히 확인하고 문제가 없다면 속력을 사용하는 방향으로 잡아봐야 할 것 같습니다.

빠르고 자세한 답변 감사드립니다.

monstro님의 프로필 이미지
monstro

작성한 질문수

질문하기