Vehicle is moving along the path but in zig zag way...Tel me where am i doing wrong...
If you have any Article links for Path following...That wil be really great to me...
Here is my code...
void CAIRobot::FollowPath(const D3DXVECTOR3 *m_vPos,const D3DXVECTOR3 *m_vHeading,const D3DXVECTOR3* m_vVelocity)
{
const D3DXVECTOR3 *m_vWayPt = g_Profile.aGameStyle->aAIPath.vNodePoint;
const D3DXVECTOR3 *m_vWayTan = g_Profile.aGameStyle->aAIPath.vNodeTangent;
const float *m_fWaySpeed = g_Profile.aGameStyle->aAIPath.fWayPtSpeed;
const int *nNumWayPt = &g_Profile.aGameStyle->aAIPath.nWayPtCount
D3DXVECTOR3 vCurPos = *m_vPos;
//Find Out the Next Way Point
if(m_dPrevPt == m_dCurPt)
m_dPrevPt -= 1;
if(m_dPrevPt<0)
m_dPrevPt = *nNumWayPt-1;
int nNextPt = m_dCurPt;
if(nNextPt>=*nNumWayPt)
nNextPt = 0;
fStep = 0.2f+D3DXVec3Length(&(m_vWayPt[m_dPrevPt] - vCurPos))/D3DXVec3Length(&(m_vWayPt[m_dCurPt] - m_vWayPt[m_dPrevPt]));
if(fStep>1)fStep = 1;
if( fStep==1)
{
m_dPrevPt = m_dCurPt;
m_dCurPt = nNextPt+1;
}
int nPt0 = m_dPrevPt-1;
if(nPt0<0)
nPt0 = *nNumWayPt-1;
int nPt1 = m_dCurPt+1;
if(nPt1>=*nNumWayPt)
nPt1 = 0;
D3DXVECTOR3 vTarPt = CalculateSplinePt(m_vWayPt[nPt0],m_vWayPt[m_dPrevPt],m_vWayPt[m_dCurPt],m_vWayPt[nPt1],fStep);
vTargetCross = vTarPt;
//Find Out the Steering angle
D3DXVECTOR3 m_vTarget = vTarPt - vCurPos;
D3DXVECTOR3 m_vSteer;
D3DXVec3Normalize(&m_vTarget,&m_vTarget);
D3DXVec3Cross(&m_vSteer,m_vHeading,&m_vTarget);
D3DXVec3Normalize(&m_vSteer, &m_vSteer);
// Left or right?
if(m_vSteer.z<-0.1f)//+ve Left -ve Right
m_fUserInput[INPUT_LEFT]=1;
else if((m_vSteer.z>0.1f))
m_fUserInput[INPUT_RIGHT]=1;
}












