亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么,在我的游戲中,生命值在與正方形碰撞后立即減少到 0,而它應該減少 1

為什么,在我的游戲中,生命值在與正方形碰撞后立即減少到 0,而它應該減少 1

慕容森 2021-11-11 14:09:54
我正在嘗試制作一個向您發送方塊的游戲,您必須通過移動控制它們周圍的圓圈的鼠標來避免它們。我添加了一個生命值來為游戲添加更多,并設置碰撞檢測,以便從圓的中心到正方形的距離小于圓的半徑,它就帶走了一個生命。這個碰撞檢測有效,只是在我檢測碰撞的 if 語句中我添加了“lives = living - 1;”,但是一旦它們發生碰撞,生命值立即下降到 0。float centerY = 250;float centerX = 175;float lives = 3;float rectY1 = random(0,500);float rectX1 = random(0,500);float rectY2 = random(0,500);float rectX2 = random(0,500);float rectY3 = random(0,500);float rectX3 = random(0,500);float rectY4 = random(0,500);float rectX4 = random(0,500);float rectY5 = random(0,500);float rectX5 = random(0,500);float rectY6 = random(0,500);float rectX6 = random(0,500);int score = 0;int squareRadius = 15;void setup(){  size(500,500);  background(155);}void draw(){  boolean gameOver = false;  boolean lifeLost = false;  background(155);  fill(149,185,215);  ellipse(centerX,centerY,30,30);  centerX = mouseX;  centerY = mouseY;  fill(0);  rect(rectX1,rectY1,30,30);  rect(rectX2,rectY2,30,30);  rect(rectX3,rectY3,30,30);  rect(rectX4,rectY4,30,30);  rectX1 = rectX1 - 5;  rectX2 = rectX2 - 5;  rectX3 = rectX3 - 5;  rectX4 = rectX4 - 5;  rectX5 = rectX5 - 5;  if(rectX1 + 30 < 0){    rectX1 = 500;    rectY1 = random(0,600);    score = score + 1;  }  if(rectX2 + 30 < 0){    rectX2 = 500;    rectY2 = random(0,600);    score = score + 1;  }  if(rectX3 + 30 < 0){    rectX3 = 500;    rectY3 = random(0,600);    score = score + 1;  }  if(rectX4 + 30 < 0){    rectX4 = 500;    rectY4 = random(0,600);    score = score + 1;  }  if(rectX5 + 30 < 0){    rectX5 = 500;    rectY5 = random(0,600);    score = score + 1;  }  if(dist(mouseX,mouseY,rectX1,rectY1) < 30){    lifeLost = true;  }  if(dist(mouseX,mouseY,rectX2,rectY2) < 30){    lifeLost = true;  }  if(dist(mouseX,mouseY,rectX3,rectY3) < 30){    lifeLost = true;  }  if(dist(mouseX,mouseY,rectX4,rectY4) < 30){    lifeLost = true;  }  if(lifeLost == true){    lifeLost = false;    lives = lives - 1;  }  if(lives == 0 || lives < 0){    gameOver = true;  }
查看完整描述

2 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

我建議在減少生命值后立即將玩家移動到離方塊足夠遠的地方,這樣它不會不斷減少生命直到它達到 0。生命立即下降到零,因為沒有足夠的緩沖時間玩家停止與方塊接觸,因此,只要玩家與方塊接觸,生命點就會不斷被帶走。


查看完整回答
反對 回復 2021-11-11
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

正如 кιмσтσ 所說,當玩家與方塊接觸時,生命計數器會不斷減少。

如果您確實像 dave 提到的那樣投入時間學習使用調試器,那么您應該能夠逐步完成draw函數的迭代并注意到生命計數器實際上每次調用該函數都會減少 1!

問題是玩家仍然與方塊保持接觸,并且在此期間仍然可以損壞。有幾種方法可以解決這個問題:最簡單和最明顯的方法是在下一次調用之前將玩家傳送到安全的地方,draw或者只是刪除對他們造成傷害的方格,但這可能會顯得不雅。一個更有趣的方法是改變玩家的狀態,這樣他們就不會失去生命,然后在設定的時間過去后改變狀態。這可能實現起來有點棘手,但可能會證明是一個有趣的挑戰!


查看完整回答
反對 回復 2021-11-11
  • 2 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號