C# Monogame-如何使if语句循环?

C# Monogame-如何使if语句循环?,c#,.net,xna,monogame,C#,.net,Xna,Monogame,这个问题的标题可能听起来很愚蠢,但请先阅读整个问题,是的,我知道所有类型的循环,我能够在编程时使用完美的方法 我正在构建一个2D游戏,当我的玩家与钉子碰撞时,我希望另一个角色慢慢行走(这很难解释,但这并不重要),但下面是代码: if (player.Bounds.Intersects(anneTrigger.Bounds)) { Anne.UpdateForAnne(gameTime); Anne.LoadHumanContent(Content); } 在简

这个问题的标题可能听起来很愚蠢,但请先阅读整个问题,是的,我知道所有类型的循环,我能够在编程时使用完美的方法

我正在构建一个2D游戏,当我的
玩家
与钉子碰撞时,我希望另一个角色慢慢行走(这很难解释,但这并不重要),但下面是代码:

 if (player.Bounds.Intersects(anneTrigger.Bounds))
 {
      Anne.UpdateForAnne(gameTime);  
      Anne.LoadHumanContent(Content);
 }
在简要解释代码时,该条件检查
玩家
是否与
Anetrigger
spike发生冲突,然后调用
Anne.UpdateForone(游戏时间)
Anne.LoadHumanContent(内容)
,这是我想要的,而且效果非常好

有什么问题吗?

问题是,这只在
玩家
处于扣球状态时有效,一旦我的
玩家
走过扣球并离开扣球,另一个角色就会停止行走,这不是我想要的。我需要它继续,只要球员已经与扣球发生碰撞


我曾尝试使用循环而不是if语句,但这只会使我的游戏崩溃。我肯定我可能必须使用布尔值,但我不太确定如何使用,我以前尝试过,但它不起作用。

在更新方法之外的类中设置布尔变量

private bool AnneActivated = false;

if (player.Bounds.Intersects(anneTrigger.Bounds))
{
   AnneActivated = true;
}

if(AnneActivated)
{
   Anne.UpdateForAnne(gameTime);  
   Anne.LoadHumanContent(Content);
}

最简单的解决方案往往是最好的。如果您发现自己跟踪的bool太多,我建议您阅读一下。如果您想避免浪费周期,请先检查bool,即:If(!AnneActivated&&InterSectMethod()){do stuff}。这样,如果安妮已经被激活,你的引擎将不会继续检查碰撞情况(除非游戏仍然需要它!)。