캐릭터 랜덤이동시에 목표지점이나 혹은 목표 회전각도에 얼추 도달했을 때
현재 위치나 각도를 목표지점/각도로 지정하는 방법에 대해서 질문드려봅니다.
//이동과 회전은 방향벡터를 경과시간 * 스피드스케일값으로
//스케일링해 기존 pos에 더해주는 방식을 사용하고 있습니다.
목적 남은거리( 벡터 ) = 목적지 위치 - 현재위치;
float 남은거리 = d3dxvec3length( 남은거리벡터 );
if( 남은거리 < 경과시간 * 이동스피드스케일값 )
{
현재위치 = 목적지위치;
}
//각도
if( acosf( D3DXVec3Dot( &목적지로의 방향벡터, &현재 방향벡터 ) ) <= 경과시간 * 회전스피드스케일값 )
{
현재 각도 = 목적지로의 각도;
}
위와 같이 만들었는데 캐릭터가 한축을 중심으로 공전하면서 계속 방황하게 되 버립니다. emoticon_04
위치/각도가 목표값과 비슷한지 어느정도 정확하게 판단해 낼때 보통 어떤 방식으로 사용하나요?
그리고 캐릭터가 어떤 목적지를 향해 이동한다고 했을 때 어떤 방법을 사용하는지 간단하게라도 설명해주실분 계시면 부탁드릴게요emoticon_11
목적지 위치까지 도달을 하지 않았다가(목적지 위치 > 현재위치)
어느순간에 도달을 하고 지나치게 되었을때 (목적지 위치 < 현재위치)
그 벗어난 거리가 경과시간 * 이동스피드 값을 지나치게 된다면 저 if 문에 걸릴 이유가 없겠죠?
회전의 경우도 마찬가지구요.
만약 처음 목적지로 이동시에 최종적으로 걸리는 시간을 계산한 후에 경과시간에 맞춰서 이동되었던 거리를 보간하는 방법은 어떨까요???