这里是游戏玩法。有三个条件。
玩家踩到 Switch-Tile,它变成了false。
1)当敌人踩到它(被困)并且玩家也踩到它时,敌人将被摧毁。
2)但是当敌人踩到它并且玩家没有踩到它时,敌人就会逃脱。
3) 如果 Switch-Tile 条件为真,那么什么也没有发生。当 Switch tile 为 false(玩家踩到 Switch-Tile)时,效果会被激活。
因为有很多 Enemy 和很多 Switch-Tile,我不得不使用foreach循环。
问题是在敌人被逃跑(案例 2)并再次踩到另一个 Switch-Tile 之后,敌人什么也没发生!
我不知道出了什么问题。效果应该是一样的,但是敌人像什么都没发生一样通过 Switch tile(他们应该被困住)
有人可以告诉我有什么问题吗?
这是代码:
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;
}
}
}
}