0

我有一个简单的 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)也许他们都没有时间检查玩家,尽管当我考虑更多时我这没有任何意义。

干杯

4

1 回答 1

1

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

于 2013-04-14T23:22:10.960 回答