これがゲームプレイです。条件は3つ。
プレイヤーがスイッチ タイルを踏むとfalseになりました。
1) 敵がそれを踏むと (トラップされ)、プレイヤーも踏むと、敵は破壊されます。
2) しかし、敵がそれを踏み、プレイヤーも踏まなかった場合、敵は逃げます。
3) Switch-Tile 条件がtrue の場合、何も起こりません。この効果は、スイッチ タイルが偽の場合 (プレイヤーがスイッチ タイルを踏む) にアクティブ化されます。
Enemy と Switch-Tile が多いため、foreachループを使用する必要があります。
問題は、敵が逃走し (ケース 2)、別のスイッチ タイルを再び踏んだ後、敵に何も起こらなかったことです!
何が悪いのかわかりませんでした。効果は同じはずですが、敵は何事もなかったかのようにスイッチ タイルを通過します (トラップされるはずです)。
誰かが何が悪いのか教えてもらえますか?
コードは次のとおりです。
public static void switchUpdate(GameTime gameTime)
{
foreach (SwitchTile switch in switchTiles)
{
foreach (Enemy enemy in EnemyManager.Enemies)
{
if (switch.Active == false)
{
if (!enemy.Destroyed)
{
if (switch.IsCircleColliding(enemy.EnemyBase.WorldCenter,
enemy.EnemyBase.CollisionRadius))
{
enemy.EnemySpeed = 10; //reducing Enemy Speed if it enemy is step on the Tile (for about two seconds)
enemy.Trapped = true;
float elapsed = (float)gameTime.ElapsedGameTime.Milliseconds;
moveCounter += elapsed;
if (moveCounter> minMoveTime)
{
//After two seconds, if the player didn't step on Switch-Tile.
//The Enemy escaped and its speed back to normal
enemy.EnemySpeed = 60f;
enemy.Trapped = false;
}
}
}
}
else if (switch.Active == true && enemy.Trapped == true
&& switch.IsCircleColliding(enemy.EnemyBase.WorldCenter,
enemy.EnemyBase.CollisionRadius)
)
{
//When the Player step on Switch-Tile and
//there is an enemy too on this tile which was trapped = Destroy Enemy
enemy.Destroyed = true;
}
}
}
}