精灵无法正确更新
本文关键字:更新 精灵 | 更新日期: 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
,或者它是否真的改变了状态。我还遇到了某些数量的对象延迟的问题(可能不是问题),所以这也可能是一种可能性。