Это то, что у меня есть
- У меня есть плоскость в 2D X, Y
- Я установил его пункт назначения, нажав на экран X ', Y'
- Я рассчитываю угол, на который нужно повернуться, чтобы встретиться с этим пунктом назначения:
// Calculate the angle between plane position and destination point
CVector3 facingVec = m_vDestination - m_vPosition;
fAngle = -Math::radiansToDegrees ( (float)atan2f(m_vDestination.x - m_vPosition.x, m_vDestination.y - m_vPosition.y) ) ;
//This doesn't work, when rotating from ex. 350 degree to 0
//plane has to go all the way around 360,350,340,330,
//...,120,...100,90,..down to zero
float angleToTurn = fAngle - m_fRotationAngle;
if(angleToTurn < 0)
{
angleToTurn += 360.0f;
}
m_fRotationAngle += (angleToTurn) / 5;
// Move the unit towards the calculated angle m_fRotationAngle
m_vDirection.x = (-sin(Math::degreesToRadians(m_fRotationAngle)));
m_vDirection.y = (cos(Math::degreesToRadians(m_fRotationAngle)));
m_vPosition += ( 2 * m_vDirection * fDelta);
Вот так это выглядит
YT Video - извините за демо-версию, в данный момент я не могу ничего получить бесплатно.
Это то, что мне нужно
- Мне нужно, чтобы он вел себя правильно, скажем, самолет поворачивается на угол 350.
Я установил пункт назначения, и новый угол должен быть 15.
Вместо того, чтобы идти: 350 340 340 310 320 310 300 290, ... 10,0,15
Следует продолжить: 350,0,15
Надеюсь, вы поможете мне с этими парнями, я уже отказался от более безумного подхода - и я борюсь с этим уже несколько дней.