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

Update value once using if/then statements

提问人:Max Blowers 提问时间:11/12/2023 最后编辑:Karl KnechtelMax Blowers 更新时间:11/12/2023 访问量:41

问:

我正在尝试实现一个名为 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;
  }
}

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

加工

评论


答:

0赞 Rabbid76 11/12/2023 #1

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

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;
}