私は単純な 2D トップダウン サバイバル ゲームを持っています。プレーヤーは単純に「逃げる」必要があります。各ラウンドで 30 秒間、画面上の敵と衝突しないでください。
レベルが上がるたびに、各敵の数が増えます。
問題
私の敵のタイプの 1 つは、プレイヤーが特定の距離に近づくまで探索/スリープ状態になり、その後、追跡状態になり、ラウンドが終了するまでそのままになります。
一度に画面に表示される敵が約 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)、おそらく全員がプレーヤーをチェックする時間がないということです。私には意味がありません。
乾杯