안기훈_자료_보존용_계정 MYPI

안기훈_자료_보존용_계정
접속 : 2875   Lv. 49

Category

Profile

Counter

  • 오늘 : 349 명
  • 전체 : 243061 명
  • Mypi Ver. 0.3.1 β
[Unreal 게시판] navigation system으로 이동시 속도 조정하기 (0) 2014/04/17 PM 07:48
Question>

unreal engine 4에서
아래 source로 character를 이동을 하려고 함.

UNavigationSystem* ns = GWorld->GetNavigationSystem();
FVector vecSomeWhere = FVector( 1000.0f, 1000.0f, 0.0f );
ns->SimpleMoveToLocation( GetController(), vecSomeWhere );

그런데, 이동 속도 조절이 안됨.
Tick()에서 CharacterMovement->Velocity를 강제로 조정해도 효과가 없음.

navigation system을 이용해서 이동할 때,
속도를 조절하려면 어떻게 해야 하는가?

-------------------------------------------------------------

Answer>

어느 Tick()에서 'Velocity'를 조정하셨는지는 모르겠지만,
UNavigationSystem::SimpleMoveToLocation()를 사용하셨다면,
UPathFollowingComponent::TickComponent()나 UPathFollowingComponent::FollowPathSegment()에서
조정한다면 효과가 있겠지만,
다른 Tick()에서 'Velocity'를 조정하시는 건 효과가 전혀 없습니다.


왜냐하면,
UPathFollowingComponent는 주기적으로
UPathFollowingComponent::TickComponent()를 호출하고 있고,
또, UPathFollowingComponent::TickComponent()에서 이동이 감지되면,
UPathFollowingComponent::FollowPathSegment()를 계속 호출하기 때문입니다.


그리고,
navigation system 내에서 속도를 균등하게 만드는 부분은
UPathFollowingComponent::FollowPathSegment() 밖에 없거든요.^^;;;;;


분석해 보셔서 아시겠지만,
UNavigationSystem::::SimpleMoveToLocation()는
UNavigationComponent와 UPathFollowingComponent를 사용해서, 움직임을 통제합니다.
따라서, UNavigationSystem::::SimpleMoveToLocation()를 호출한다면,
UPathFollowingComponent의 통제에서 벗어날 방법이 없습니다.
그렇기 때문에, 다른 Tick()에서 'Velocity' 조정하는 건 의미가 없습니다.


위와 같은 이유로,
굳이 SimpleMoveToLocation()를 사용하셔서,
이동을 해결하셔야 한다면, 2가지 방법이 가능하겠습니다.


방법1>
UPathFollowingComponent 상속한 새로운 class로
UPathFollowingComponent::FollowPathSegment()를 재정의한 뒤에
새로운 class를 이용하도록 SimpleMoveToLocation()를 수정하시기 바랍니다.


방법2>
UPathFollowingComponent::FollowPathSegment()의 아래 부분을
님 의도대로 수정하시기 바랍니다.^^

수정전:
FVector MoveVelocity = (CurrentTarget - CurrentLocation) / DeltaTime;

수정후:
FVector MoveVelocity = (CurrentTarget - CurrentLocation) / DeltaTime;
MoveVelocity *= m_fYourVelocityCtrlRate;

m_fYourVelocityCtrlRate는 님이 정의한 float형 변수이고, '속도 조정 비율'이 되겠습니다.


두가지 중에 하나 고르세요.^^







Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS

신고

 
X