q : 언리얼엔진에서 1초 간격으로 100,50,3 100,10,2 100,30,1 이 값들이 순서대로 들어와서 액터의 회전값으로 사용했어 하지만 이벤트 틱은 매우 빠르게 반복되잔아? 이 값들이 1초마다 들어오다보니 액터 회전이 부드럽지 않고 딱딱끊겨있어 어떻게하면 회전 동작을 부드럽게 보간할수있을까
a : 언리얼 엔진에서 액터의 회전을 부드럽게 보간하기 위해 사용할 수 있는 방법 중 하나는 보간 기법을 적용하는 것입니다. 아래는 예시 코드로 보간을 구현하는 방법입니다:
1. 액터 클래스에 변수 추가: - FVector TargetRotation; // 목표 회전값 - float InterpSpeed; // 보간 속도
2. 이벤트 틱 함수 내에서 보간 로직 추가: - FVector CurrentRotation = GetActorRotation().Euler(); // 현재 회전값 - FVector NewRotation = FMath::VInterpTo(CurrentRotation, TargetRotation, DeltaTime, InterpSpeed); // 보간된 회전값 계산 - SetActorRotation(FRotator(NewRotation.X, NewRotation.Y, NewRotation.Z)); // 액터에 회전값 적용
3. 1초마다 값 갱신: - 매 1초마다 TargetRotation 변수에 새로운 회전값을 설정합니다.
이렇게 구현하면 이벤트 틱이 매우 빠르게 반복되더라도 보간 기법을 사용하여 액터의 회전을 부드럽게 보간할 수 있습니다. 보간 속도(InterpSpeed)를 조정하여 원하는 부드러움 수준을 설정할 수도 있습니다.
q : C++코드 대신 블루프린트로 설정법 알려줘
a : 블루프린트에서 액터의 회전을 부드럽게 보간하기 위해서는 노드를 조합하여 구현할 수 있습니다.
1. 액터 블루프린트에서 변수 추가: - TargetRotation: Rotator // 목표 회전값 - InterpSpeed: Float // 보간 속도
2. 블루프린트 그래프에서 보간 로직 추가: - "GetActorRotation" 노드로 현재 회전값을 가져옵니다. - "Break Rotator" 노드로 현재 회전값을 나눠서 X, Y, Z 각도 값을 추출합니다. - "Make Rotator" 노드로 TargetRotation 변수 값을 Rotator 형태로 만듭니다. - "Delta Seconds" 노드를 사용하여 Delta Time 값을 가져옵니다. - "VInterp To" 노드로 현재 회전값과 목표 회전값을 보간하여 보간된 회전값을 계산합니다. - "SetActorRotation" 노드로 액터에 보간된 회전값을 적용합니다.
3. 1초마다 값 갱신: - "Set Timer by Event" 노드를 사용하여 1초마다 보간할 회전값을 설정하는 이벤트를 생성합니다. - 이벤트에서 "Set Actor Rotation" 노드를 사용하여 TargetRotation 변수 값을 변경합니다.
이렇게 구현하면 블루프린트에서도 보간 기법을 사용하여 액터의 회전을 부드럽게 보간할 수 있습니다. 보간 속도(InterpSpeed)를 조정하여 원하는 부드러움 수준을 설정할 수도 있습니다.
얘 대답이 맞든 틀리든 대충 비슷하겐 할수잇을듯
위에서 틀린건 나는 벡터가 아니라 로테이터 쓰니
RInterpTo 쓰려고하는데
deltaTime이야 이벤트틱에서 나오는거 쓰면될거같고.
보간속도는 얼마나 하면될지 모르겟다.
아쉬운데로 질문
q : 언리얼엔진 RInterpTo에 대해서 자세히 설명해줘 여기서 interp speed는 몇으로 하는게 적당할까?
a : RInterpTo 함수에서 사용되는 보간 속도(Interp Speed)는 원하는 부드러움의 정도를 결정하는 매개변수입니다. 이 값은 프로젝트의 요구사항과 시각적인 효과에 따라 다를 수 있습니다.
적당한 보간 속도를 선택하는 것은 상황과 개발자의 취향에 따라 다를 수 있지만, 몇 가지 일반적인 가이드라인이 있습니다:
1. 느린 보간 속도: 저속으로 회전하는 액터나 오브젝트에 적합합니다. 예를 들어, 천천히 돌아가는 문이나 회전하는 플랫폼 등을 구현할 때 사용할 수 있습니다.
2. 중간 보간 속도: 대부분의 상황에서 적합한 기본값입니다. 일반적인 캐릭터의 회전이나 카메라 이동 등에 사용될 수 있습니다. 대부분의 경우, 5-10 정도의 값을 사용하는 것이 적당합니다.
3. 빠른 보간 속도: 빠른 이동이나 반응성이 필요한 상황에 적합합니다. 빠른 캐릭터의 회전이나 빠르게 이동하는 물체 등을 구현할 때 사용될 수 있습니다. 높은 값인 15 이상의 값을 사용할 수 있습니다.
위의 값은 일반적인 가이드일 뿐이며, 프로젝트의 필요에 따라 조정할 수 있습니다. 보간 속도를 조정하여 원하는 시각적인 효과를 얻을 수 있으며, 필요에 따라 여러 값을 실험해보면서 적절한 보간 속도를 찾을 수 있습니다.
RPYRotator 가 바뀌면 PrevRPYRotator에 저장하고 새값을 RPYRotator에 저장한 상태에서