我正在尝试制作一个简单的破砖游戏。我拥有碰撞和简单物理学创造的一切。球从球拍和墙壁上弹起,但是我在打砖块时遇到了麻烦。我可以使球从砖块上弹起,我只是没有足够的经验来知道如何使砖块消失。砖块成阵列排列。有什么方法可以删除数组的砖块/特定索引吗?
这就是我创建积木的方式
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;
}
}
}
在砖元素中正确放置“活动”(如TyCobb建议),并在碰撞中将其设置为true,然后在循环外的某个位置将其删除。
bricks.removeAll(b =>!(b.active))
通过不同的属性,您的砖块可能具有健康,可破坏的属性,掉落某些物品的砖块……
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句