我有一个简单的 2D 自上而下的生存游戏,玩家只需在每轮 30 秒内“逃跑”/不与屏幕上的敌人发生碰撞。
每次升级后,每个敌人的数量都会增加。
问题
我的一种敌人类型处于搜索/睡眠状态,直到玩家向它靠近一定距离,然后它处于追逐状态,并一直保持这种状态直到回合结束。
在较早的几轮中,屏幕上一次只有大约 30 个敌人,所有行为都可以正常工作。然而,当我开始计数到大约 60 多个敌人时,这个特定的敌人似乎追了玩家一会儿,然后似乎又回到了睡眠状态——考虑到以下情况,这似乎很奇怪;
public override void Update(SpriteManager inManager)
{
this.spriteRectangle.X = (int)position.X;
this.spriteRectangle.Y = (int)position.Y;
if (this.collisionRectangle.Intersects(inManager.player.spriteRectangle))
this.spriteState = SpriteState.Chasing;
if (this.spriteState == SpriteState.Chasing)
{
CheckForPlayer(inManager);
if (this.spriteRectangle.Intersects(inManager.player.spriteRectangle))
{
inManager.player.spriteState = SpriteState.Dead;
}
}
base.Update(inManager);
}
private void CheckForPlayer(SpriteManager inManager)
{
if (this.position.X > inManager.player.position.X)
this.position.X -= X_SPEED;
else
this.position.X += X_SPEED;
if (this.position.Y > inManager.player.position.Y)
this.position.Y -= Y_SPEED;
else
this.position.Y += Y_SPEED;
}
任何人都可以解释为什么他们认为这个问题会发生,我唯一的想法是高精灵(最大为 108)也许他们都没有时间检查玩家,尽管当我考虑更多时我这没有任何意义。
干杯