C# XNA płynny ruch

0

Witam!
Jestem młodym programistą i obecnie walczę z C# XNA.
Postanowiłem spróbować napisać grę typu Tower Defense.
Mój kod jest pewnie do bólu prosty, bo większości rozwiązań dochodzę sam.
Obecnie moim największym problemem jest raczej dość proste zagadnienie - ruch elementu w dowolnym kierunku.
Nie wiem, co zrobić, by obiekt (np. pocisk z wieżyczki) poleciał prosto z punktu A (działo) do punktu B (przeciwnik).
Nie ma problemu, gdy punkt A i B znajdują się na tej samej osi (X lub Y), ale nie umiem tworzyć ruchu na skos.
Próbowałem użyć klasy Curve, czytałem i czytałem, ale nie mam zielonego pojęcia, jak tego używać >.<
MSDN mnie nie oświecił.
Zdaję sobie sprawę, że mój problem to nic, ale nie umiem sobie poradzić.

Tak, żeby was dobić swoją niewiedzą moja pierwsza funkcja ruchu wygląda tak...:

//poniższa metoda jest fragmentem klasy CBullet
//zmienne zaczynające się od m_ to zmienne składowe

private void Move(GameTime gameTime)
        {
            if (!m_live)
                return;

            if (Vector2.Distance(m_sprite.m_position, m_target) <= m_size)
            { return; }
            

            //przenoszenie się w kierunku m_target
            double now = gameTime.TotalGameTime.TotalSeconds;
            float way = (float)((now - m_lastmove) * m_speed);

            if (m_target.m_position.X > m_position.X)
            {
                if (m_target.m_position.X - m_position.X < way)
                {
                    m_position.X = m_target.m_position.X;
                }
                else
                {
                    m_position.X += way;
                }
            }
            else if (m_target.m_position.X != m_position.X)
            {
                if (m_position.X - m_target.m_position.X < way)
                {
                    m_position.X = m_target.m_position.X;
                }
                else
                {
                    m_position.X -= way;
                }
            }

            if (m_target.m_position.Y > m_position.Y)
            {
                if (m_target.m_position.Y - m_position.Y < way)
                {
                    m_position.Y = m_target.m_position.Y;
                }
                else
                {
                    m_position.Y += way;
                }
            }
            else if (m_target.m_position.Y != m_position.Y)
            {
                if (m_position.Y - m_target.m_position.Y < way)
                {
                    m_position.Y = m_target.m_position.Y;
                }
                else
                {
                    m_position.Y -= way;
                }
            }

        }

Najchętniej skorzystałbym z klasy Curve. Zupełnie jej nie ogarniam, jednak chyba lepiej będzie się nauczyć, niż programować bez niej :)
Pozdrawiam!

0

Poszukaj algorytmu do rysowania linii od punktu do punktu.

PS. XNA nie jest już rozwijane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1