【发布时间】:2015-02-15 23:57:33
【问题描述】:
我正在尝试制作一个简单的破砖游戏。我用碰撞和简单的物理学创造了一切。球从桨和墙壁上反弹,但我在砖块上遇到了麻烦。我可以让球从砖块上反弹,我只是没有足够的经验知道如何让砖块消失。砖是一个阵列。有什么方法可以删除数组的砖/特定索引吗?
这就是我创建块的方式
int blockCount=0;
for (int x = 0; x < 8; x++)
{
for (int y = 0; y < 5; y++)
{
blocks[blockCount] = Content.Load<Texture2D>("Block");
blocksPosition[blockCount].X = 95 + (x * 75);
blocksPosition[blockCount].Y = 20 + (y * 50);
blockCount++;
}
}
这就是我如何进行碰撞以及如何实现砖块移除
public void DetectBlockBallCollision()
{
for (int i = 0; i<40; i++)
{
if ((ballPosition.Y + ball.Height) >= blocksPosition[i].Y &&
(ballPosition.Y + ball.Height) < (blocksPosition[i].Y+75) &&
(ballPosition.X + ball.Width) > blocksPosition[i].X &&
ballPosition.X < (blocksPosition[i].X + blocks[i].Width))
{
movingUp = false;
//whatever would get rid of block;
}
}
}
【问题讨论】:
-
我会在砖块上创建一个
Active或Visible属性,然后使用它来确定是否绘制它和/或计算它的碰撞。您也可以将元素设置为null并在循环中检查 null。