在分鐘,它會刪除1個或2小行星,但並非所有出現在屏幕上,我認爲有這個方法的缺陷,但我不知道是什麼......碰撞檢測 - 小問題
public void CollisionDetection() { for (int i = 0; i < ship.bullets.Count; i++) { Rectangle shipRectangle = new
矩形((int)的ship.ShipPosition.X, (INT)ship.ShipPosition.Y, shipTexture.Width,shipTexture.Height);
for (j = 0; j < asteroidPositions.Count; j++) { asteroidRectangle = new Rectangle((int)asteroidPositions[j].X,
(INT)asteroidPositions [j]的.Y, asteroidTexture.Width, asteroidTexture.Height);
Vector2 position1 = asteroidPositions[j]; Vector2 position2 = ship.bullets[i]; float Cathetus1 = Math.Abs(position1.X - position2.X); float Cathetus2 = Math.Abs(position1.Y - position2.Y); Cathetus1 *= Cathetus1; Cathetus2 *= Cathetus2; distance = (float)Math.Sqrt(Cathetus1 +
Cathetus2);
if ((int)distance < asteroidTexture.Width) { score += 20; asteroidPositions.RemoveAt(j); j--; } } if (shipRectangle.Intersects(asteroidRectangle)) { lives--; asteroidPositions.RemoveAt(j); } if (lives == 0) Exit(); }
建議您重命名位置1到asteoridPosition和位置2到shipPosition。爲了更好的可讀性...... – dStulle 2010-11-15 20:24:23
刪除小行星後的j--是什麼? – dStulle 2010-11-15 21:25:14