В настоящее время я работаю над созданием игры на 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. */