精灵无法正确更新

时间:2013-04-14 23:10:43

标签: c# performance xna

我有一个简单的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)也许他们都没有时间检查玩家,虽然当我想到对我来说更重要的是没有意义。

干杯

1 个答案:

答案 0 :(得分:1)

如果没有完整的代码,很难说,但我认为它在某个地方是一个小错误。您应该尝试调试它并检查状态是Chasing还是确实改变了状态。我也遇到了一定数量的物体滞后问题(可能不是问题)所以也可能是这种情况。

相关问题