gpt4 book ai didi

c#-4.0 - 当 'enemy' 击中一个路点时,所有敌人都会进入队列中的下一个路点......为什么?

转载 作者:行者123 更新时间:2023-12-02 07:51:35 24 4
gpt4 key购买 nike

这是我正在编写的代码,我希望所有敌人都自行前往每个路径点;但是,当一个敌人击中路点时,所有敌人都会前往下一个路点。我该如何解决?

我从 main 运行它,我有一个敌人类,当我的敌人被创建时,我已经将队列作为参数传入。原始队列称为“wayQ”,我的敌人使用的复制队列称为“way”。

编辑:这里是敌人类。我修改了代码以覆盖主要更新方法。

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;
}
}
}
}

最佳答案

修改您的 Enemy 类,使其拥有自己的路点列表副本。创建一个航路点列表并将其分配给每个 Enemy 对象,为每个 Enemy 对象提供一个对一个列表的引用。当您Dequeue 一个航路点时,您会在一个列表中这样做。

关于c#-4.0 - 当 'enemy' 击中一个路点时,所有敌人都会进入队列中的下一个路点......为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3539053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com