我正在尝试使用 xna 进行碰撞检测。我有一个(某种)平台游戏地图,我从二维数组中绘制了一张地图,如下所示:
int[,] map = new int[,]
{
{0,0,1,0,0,0,0,0,},
{0,0,1,1,0,0,0,0,},
{0,0,0,1,1,0,0,0,},
{0,0,0,0,1,0,0,0,},
{0,0,0,1,1,0,0,0,},
{0,0,1,1,0,0,0,0,},
{0,0,1,0,0,0,0,0,},
{0,0,1,1,1,1,1,1,},
};
我从http://xnatd.blogspot.com/2009/02/ok-so-first-part-of-our-tower-defence.html获取它,所以它不是实际的,但它是相似的。我还为我的主要角色开设了一门课程,例如带有没有问题的边界框的横向卷轴。
但是,如何获取我的图块集的边界框并检查 mario.boundingbox 是否与它们相交?
我知道我可以boundingbox.intersects(boundingbox2)
用于交集,但会有很多边界框(可能是它们的二维数组?这可能吗?)我已经尝试了几次但我搞砸了。
我用来绘制的代码与链接中的代码非常相似。我试图制作一个边界框数组并为它们设置一个边界框,因为我知道 x、y 和大小,但我最终在随机点上创建了边界框。
我想我需要知道如何在此代码中创建边界框并稍后使用它们(循环遍历每个 x 和 y 看看是否有任何接触?):
for (int x = 0; x < Width; x++)
{
for (int y = 0; y < Height; y++)
{
int textureIndex = map[y, x];
if (textureIndex == -1)
continue;
Texture2D texture = tileTextures[textureIndex];
batch.Draw(texture, new Rectangle(
x * 32, y * 32, 32, 32), Color.White);
}
}
我很高兴知道是否有另一种方法可以做到这一点,或者我的想法不正确。