在分钟,它会删除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