Witam, jestem o krok od skończenia mojego najnowocześniejszego projektu, na sam koniec pozostawiłem mianowicie strzelanie wieżyczek do potworów, otóż obecnie mam to zaimplementowane ale coś jednak jest nie tak bo pocisk raz trafi w cel, a raz nie, szukałem w internecie ale chyba szukać nie umiem, tak więc mianowicie, jeśli mam podane następujące dane:
Pozycje potwora
Pozycja wieżyczki
Prędkość pocisku
to jak w takim razie obliczyć gdzie ta wieżyczka ma strzelić? Jesli pocisk byłby wystarczająco szybki to wystarczyłoby strzelić w pozycje potwora, ale zanim tam pocisk doleci to potwór będzie gdzie indziej, tak więc jak to policzyć? Dodam że otrzymywanie pozycji potwora po czasie X mam już zaimplementowane jakby się to przydało, obecnie wygląda to u mnie tak, ale tak jak wspomniałem coś tu nie działa ;//
sf::Vector2f enemyPos = m_unique.m_enemy->GetProporties()->m_position;
m_unique.m_position = l_tower->GetPosition();
m_unique.m_tick = enemyPos - m_unique.m_position;
float seconds = abs((abs(m_unique.m_tick.x) > abs(m_unique.m_tick.y) ? m_unique.m_tick.x : m_unique.m_tick.y)) / l_tower->GetUpgradeProporties().m_bulletSpeed;
enemyPos = m_unique.m_enemy->GetPositionAfter(seconds);
m_unique.m_tick = enemyPos - m_unique.m_position;
seconds = abs((abs(m_unique.m_tick.x) > abs(m_unique.m_tick.y) ? m_unique.m_tick.x : m_unique.m_tick.y))/ l_tower->GetUpgradeProporties().m_bulletSpeed;
m_unique.m_timeToHitTarget = seconds;
m_unique.m_tick.x /= seconds;
m_unique.m_tick.y /= seconds;
oraz poruszanie pocisku
m_unique.m_position.x += m_unique.m_tick.x * l_dT;
m_unique.m_position.y += m_unique.m_tick.y * l_dT;
m_unique.m_timeToHitTarget -= l_dT;
if(m_unique.m_timeToHitTarget <= 0.f && m_unique.m_enemy){
m_unique.m_enemy->OnBulletHit(this);
m_manager->RemoveBullet(this);
}