我正在制作一个游戏,让玩家跑来跑去收集新西兰人。我希望点计数器每次只增加一个。到目前为止我所拥有的是指针递增,但保持递增。即,当玩家触摸奇异果时,计数器继续增加1。
以下是Intersect方法:
public void Intersect(Rectangle playerRect, SpriteBatch spriteBatch)
{
foreach (Rectangle kiwiRect in kiwiRectangle.Except(collectedKiwis))
{
if (kiwiRect.Intersects(playerRect))
{
collectedKiwis.Add(kiwiRect);
isCollected = true;
}
else
{
spriteBatch.Draw(kiwiTexture, kiwiRect, Color.White);
}
}
}
以下是Update和Draw方法:
public void Update()
{
points = "Points: " + counter;
if (isCollected)
{
counter++;
}
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.DrawString(pointCounter, points, new Vector2(500, 10), Color.Red);
}
答案 0 :(得分:2)
嗯,你应该至少检查两个条件:
因此,如果你被交叉并且还没有收集kiwi,你可以设置isCollected标志并增加计数器。在下一个Update()运行中,您将跳过该奇异果(如果您还没有删除它或想要执行某些动画),因为您已经设置了isCollected标志,如:
if (Intersect(...) && !isCollected)
{
counter++;
isCollected=true;
}
虽然这种方法可以回答你的问题,但我建议你考虑一下你想要实现的整个游戏逻辑,例如。如何管理所有的猕猴桃以及如何只检查交叉的活跃猕猴桃以提高性能:)