【发布时间】:2012-08-02 15:56:49
【问题描述】:
我正在尝试使用 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);
}
}
我很高兴知道是否有其他方法可以做到这一点,或者我的想法不正确。
【问题讨论】:
标签: c# xna bounding-box