Как мне постепенно переместить окно рисунка из точки в курсор в C #? - PullRequest
0 голосов
/ 10 апреля 2019

В настоящее время я работаю над созданием игры на C # для школьного проекта. Что я хочу делать в программе, так это уметь снимать коробку с картинками из моего спрайта персонажа и заставлять эту коробку с изображениями постепенно перемещаться к курсору.

Я искал в Интернете и пытался применить этот код (https://www.codeproject.com/Questions/1155766/Move-a-picturebox-along-a-line) к моему проекту. Мой снимок перемещается относительно позиции курсора, но он просто не движется к курсору. Я пытался настроить код уже много дней, и кажется, что ничего не работает или не улучшает его.

        Point end;
        Point start;
        int interval = 7;
        Point middle;
        double radians;
        private void timer1_Tick(object sender, EventArgs e)
        {
            middle.X -= Convert.ToInt16(interval * Math.Cos(radians/Rad2Deg));
            middle.Y -= Convert.ToInt16(interval * Math.Sin(radians/Rad2Deg));

            pictureBox2.Location = middle; //picturebox2 is the shot sprite
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData = Keys.Space)
            {
            start = pictureBox1.Location;
            end = Cursor.Position;
            middle = start;

            radians = (Angle(start, end) - 180) * -1;

            timer1.Enabled = true;
            }
        }

        private void MainGame_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Space)
            {
                timer1.Stop();
                pictureBox2.Location = start;
            }
        }

        const double Rad2Deg = 180.0 / Math.PI;

        private double Angle(Point start, Point end)
        {
            return Math.Atan2(start.Y - end.Y, start.X - end.X) * Rad2Deg;
        }

/*As I stated earlier, the shot doesn't follow my cursor and seems inconsistent in spite of what I try to fix it. */
...