我正在嘗試制作一個向您發送方塊的游戲,您必須通過移動控制它們周圍的圓圈的鼠標來避免它們。我添加了一個生命值來為游戲添加更多,并設置碰撞檢測,以便從圓的中心到正方形的距離小于圓的半徑,它就帶走了一個生命。這個碰撞檢測有效,只是在我檢測碰撞的 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。生命立即下降到零,因為沒有足夠的緩沖時間玩家停止與方塊接觸,因此,只要玩家與方塊接觸,生命點就會不斷被帶走。

白板的微信
TA貢獻1883條經驗 獲得超3個贊
正如 кιмσтσ 所說,當玩家與方塊接觸時,生命計數器會不斷減少。
如果您確實像 dave 提到的那樣投入時間學習使用調試器,那么您應該能夠逐步完成draw
函數的迭代并注意到生命計數器實際上每次調用該函數都會減少 1!
問題是玩家仍然與方塊保持接觸,并且在此期間仍然可以損壞。有幾種方法可以解決這個問題:最簡單和最明顯的方法是在下一次調用之前將玩家傳送到安全的地方,draw
或者只是刪除對他們造成傷害的方格,但這可能會顯得不雅。一個更有趣的方法是改變玩家的狀態,這樣他們就不會失去生命,然后在設定的時間過去后改變狀態。這可能實現起來有點棘手,但可能會證明是一個有趣的挑戰!
添加回答
舉報
0/150
提交
取消