精灵无法正确更新

本文关键字:更新 精灵 | 更新日期: 2023-09-27 18:09:13

我有一款简单的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),也许他们都没有时间检查玩家,尽管当我更多地思考这个问题时,我觉得这没有意义。

欢呼

精灵无法正确更新

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