Хорошо, я студент-программист в университете, и я столкнулся с этой проблемой при создании 2D-игры Star Wars X-Wing. Корабль постоянно меняет направление, чтобы избежать входящих TieFighters, и я смог создать ракету перед X-Wing.
Проблема в том, что я не знаю, как запустить ракету в направлении корабля.
Код для размещения ракеты:
if (pInputs->KeyPressed(DIK_SPACE))
{
Vector2D missileDirection; //Section needs fixed as missile spawns inside ship and destroys it.
missileDirection.setBearing(m_angle, 100);
Vector2D missilePosition = m_position + missileDirection;
FlakShell* pFlakShell = new FlakShell;
pFlakShell->Initialise(missilePosition, m_angle, m_pParticles);
Game::instance.m_objects.AddItem(pFlakShell, true);
}
Это скорость для FlakShell(missile)
:
m_velocity.set(0, 0);
и это код, который я должен заставить его двигаться:
m_velocity += m_velocity * 1.5f * frametime;
m_position += m_velocity * frametime; //Position is equal to velocity * frametime
Может кто-нибудь мне помочь?
Я думаю, что у вас уже есть правильный код, но вам не хватает коэффициента масштабирования, чтобы отодвинуть ракету от корабля:
float ScalingFactor = 100.f; //Just a guess...
Vector2D missilePosition = m_position + missileDirection*ScalingFactor;
Других решений пока нет …