2016-08-29 5 views
1

나는 게임을 시작할 때 파일로부터 읽혀지는 액터의 움직임에 대한 데이터를 가지고 있습니다. 읽어 들인 데이터는 액터가 다음으로 이동해야하는 벡터 위치를 포함합니다. 현재 Actor에서 Position으로 이동하는 Actor는 아무 문제없이 움직입니다. Actor에 연결된 Skeletal Mesh에 애니메이션을 추가하기 전까지는 ...언리얼 4 C++ 배우의 움직임

내 문제 : 유휴, 걷기, 조깅 및 달리기를 할 애니메이션을 결정하는 속도를 어떻게 알 수 있습니까? 그것은 현재 위치를 lerping 오전 속도가 없어 :

SetActorLocation (FMath :: Lerp (GetActorLocation(), newPos, 0.01));

거리 여행 및 속도를 기반으로 올바른 애니메이션을 설정하는 방법에 대한 의견이 있으십니까?

액터 이동을 Character로 이동해야 AddMovementInput을 사용하여 속도를 얻을 수 있습니다. 그런 다음 그 길을 내려 가면 내가 말하는 방법 :

이 문자를 현재 위치에서 X 위치로 이동하면 문자를 애니메이션 선택에 사용할 올바른 속도로 지정합니다.

답변

0

두 벡터 길이 (GetWorldLocation)의 차이를 정규화하고 X 변수로 abs (부동 소수점) 결과를 사용하여 애니메이션 BP에서 유휴, 걷기, 조깅, 실행을위한 1D 혼합 공간에 넣을 수 있습니까? 또한 "수용 반경"을 고려해야합니다. 그렇지 않으면 위치에 도착하면 빨리 받아 들여지지 않고 계속 빨리 돌아옵니다.

왜 벡터에서 벡터로 왜곡하는지 확신하지 못합니다. 나는 개인적으로 (MoveToActor 또는 MoveToLocation)을 사용했을 것이다.

AMyPawn->MoveToActor(AMyActor, 90.f,true,true,false,0,true); 

이렇게 많은 청소기! BT/BB를 사용하는 MoveToLocation.

+0

응답 해 주셔서 감사합니다. 몇 가지 질문이 있습니다. 데이터를 읽을 때 제어되는 내 배우의 기본 클래스로 사용해야하는 클래스는 무엇입니까? 배우/캐릭터/폰/- 왜? 이동하는 가장 좋은 방법은 무엇입니까? Lerp 위치? 이동? –

+0

Def Pawn/Character (Def Pawn/캐릭터)입니다. 사실 EnemyCharacter (AEnemyCharacter.h + cpp) 클래스는 기본적으로 APawn (Pawn.h + cpp)을 상속하는 ACharacter (Character.h + cpp)를 상속합니다. 캐릭터는 이미 움직이는 논리를 구축했습니다! 그들은 플레이어 나 AI와 세계와의 모든 물리적 상호 작용을 책임집니다. 캐릭터 이동 구성 요소를 직접 연결하고 모터에 전원을 공급할 수 있습니다. MoveToLocation, MoveTo 또는 직접 이동을 사용할 수 있습니다. 이것들은 행동 트리에서 모두 사용할 수 있습니다. 다른 적 목표물과 함께 칠판을 설정할 수도 있습니다! – ApolloSoftware