Вот код, над которым я работаю, я хочу, чтобы все враги пошли в каждую точку самостоятельно; однако, когда один враг поражает путевую точку, все враги переходят на следующую путевую точку. Как мне это исправить?
Я запускаю это с основного, у меня есть класс врага, и я передал очередь в качестве параметра, когда создается мой враг. Исходная очередь называется 'wayQ', скопированная, которую используют мои враги, называется 'way'.
Edit:
Здесь класс противника. Я изменил код, чтобы переопределить основной метод обновления.
class Enemy : GameObject
{
public Texture2D texture;
public float scale = 0.3f;
public Queue<Vector2> way = new Queue<Vector2>();
private int atDestinationLimit = 1;
public Enemy()
{
}
public Enemy(ContentManager Content, int health, float speed, Vector2 vel, Vector2 pos, Queue<Vector2> wayQ)
{
this.Health = health;
this.Speed = speed;
this.velocity = vel;
this.position = pos;
this.IsAlive = true;
this.texture = Content.Load <Texture2D>("SquareGuy");
this.center = new Vector2(((this.texture.Width * this.scale) / 2), ((this.texture.Height * this.scale) / 2));
this.centPos = this.position + this.center;
this.way = wayQ;
}
public void Update(GameTime theGameTime)
{
if (way.Count > 0)
{
if (Vector2.Distance(centPos, way.Peek()) < atDestinationLimit)
{
float distanceX = MathHelper.Distance(centPos.X, way.Peek().X);
float distanceY = MathHelper.Distance(centPos.Y, way.Peek().Y);
centPos = Vector2.Add(centPos, new Vector2(distanceX, distanceY));
way.Dequeue();
}
else
{
Vector2 direction = -(centPos - way.Peek());
direction.Normalize();
velocity = Vector2.Multiply(direction, Speed);
centPos += velocity;
}
}
}
}