使用 if/then 语句更新一次值

问题描述 投票:0回答:1

我正在尝试实现一个名为 ScoreCount 的得分计数器,它会在两个形状接触时更新。我使用 if/then 语句来检查两个形状是否接触,如果接触,则更新分数。发生的情况是,只要它们接触,代码就会继续运行,我一直在努力寻找一种方法让它只更新一次。

int player1PosX = 32;
int player1PosY = 30;

int player2PosX = 608;
int player2PosY = 570;

int scoreCount = 0;

void draw() {
  drawPlayingField();
  drawPlayers();
  drawScoreBar();
  isTagged(player1PosX, player1PosY, player2PosX, player2PosY);
}

void isTagged(int p1X, int p1Y, int p2X, int p2Y) {
  println(p1X, p1Y, p2X, p2Y);
  if (p1X == p2X && p1Y == p2Y) {
    text("Tag, you're it!", 225, 300);
    scoreCounter += 1;
  }
}

我尝试使用布尔值来检查它们是否正在接触,然后重置布尔值,但它仍然不起作用。

processing
1个回答
0
投票

您必须检查对象是否在前一帧中相互接触,并且只有在它们现在接触但之前没有接触过时才增加分数:

bool tagged = false;

void isTagged(int p1X, int p1Y, int p2X, int p2Y) {
  
  bool taggedNow = p1X == p2X && p1Y == p2Y;
  if (!tagged && taggedNow) {
    text("Tag, you're it!", 225, 300);
    scoreCounter += 1;
  }
  tagged = taggedNow;
}
© www.soinside.com 2019 - 2024. All rights reserved.