我有一个简单的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)也许他们都没有时间检查玩家,虽然当我想到对我来说更重要的是没有意义。
干杯
答案 0 :(得分:1)
如果没有完整的代码,很难说,但我认为它在某个地方是一个小错误。您应该尝试调试它并检查状态是Chasing
还是确实改变了状态。我也遇到了一定数量的物体滞后问题(可能不是问题)所以也可能是这种情况。