Я пытаюсь автоматически перемещать картинки (NPC) по направлению к главному персонажу (pictureBox1), в основном я хочу, чтобы они преследовали pB1.Я очень плохо знаком с векторами.Я не мог понять логику очень хорошо.Сначала позвольте мне показать коды.
int pictx,picty,mcx,mcy;
private void Monster_drag_Tick(object sender, EventArgs e)
{
foreach (var pict in this.Controls.OfType<PictureBox>())
{
pictx = pict.Location.X;
picty = pict.Location.Y;
mcx = pictureBox1.Location.X;
mcy = pictureBox1.Location.Y;
if (pict.Name != "pictureBox1")
{
ChaseVector(mcx, mcy, 0.5f);
}
}
}
Это было событие таймера.Интервал 1000, кстати.Также у меня есть Struct, который автоматически создает картинки.Я вытаскиваю все ящики с картинками, которые были созданы в Struct, с помощью foreach, как вы можете видеть.
А вот метод Vector;
public void ChaseVector(int x, int y, float speed)
{
float tx = x - pictx;
float ty = y - picty;
double length = Math.Sqrt(tx * tx + ty * ty);
if (length < speed)
{
// move towards the goal
pictx = (int)(pictx + speed * tx / length);
picty = (int)(picty + speed * ty / length);
foreach (var pict in this.Controls.OfType<PictureBox>())
{
if (pict.Name != "pictureBox1")
{
pict.Location = new Point(pictx, picty);
}
}
}
else
{
// already there
pictx = x;
picty = y;
foreach (var pict in this.Controls.OfType<PictureBox>())
{
if (pict.Name != "pictureBox1")
{
pict.Location = new Point(pictx, picty);
}
}
}
}
Я нашел этот код в потоке стека.Я действительно ничего не знаю о векторах.Этот код заставляет кинотеатры переходить к главному герою.Прошить их в принципе.Я хочу, чтобы они медленно гонялись за Маком, я имею в виду ходьбу.Как будто скорости нет, они просто перепрыгивают через mc каждый раз, когда я перемещаю персонажа.
В ожидании вашей помощи и, если есть лучший способ использовать Векторы, пожалуйста, сообщите.Заранее спасибо.