XNA矩形覆盖纹理上的相交碰撞

时间:2012-05-09 12:00:01

标签: c# xna textures

所有

我们试图让一些交叉碰撞起作用,但问题的经验是矩形没有重叠修正纹理。

纹理是20x340像素的图像。在纹理的类(Net)中,我们使用Rectangle作为碰撞框(SetCollisionBox方法)。我们在Game类(LoadContent()方法下)中定义了以下内容。

g_Net = new Net("Net1");
g_scene.Place(g_Net, new Vector3(8, 100, 1));
g_Net.SetCollisionBox(new Rectangle((int)g_Net.Position.X, (int)g_Net.Position.Y, 20, 340));

我们遇到的问题是矩形被绘制在纹理上方( Net )并且调整高度确实使它排成更多,但是只有上面的可以与球对象碰撞一个g_Ball.ballRectIntersect(g_Net.netRect)netRect成为Rectangle班级中的公共成员NetballRect等同于Ball班级。{/ p>

所以我的问题是如何才能让Rectangle叠加层正确显示在纹理上,以便碰撞与整个网纹理相对应?是否有更好的方法来放置这个叠加层?

非常感谢你。

干杯。

  • 萨姆。

1 个答案:

答案 0 :(得分:1)

我假设您的纹理是2D,因为您说的是纹理,而您使用的是矩形而不是BoundingBox。

在这种情况下,回答非常简单。

要设置碰撞属性,请按照以下步骤操作。让我们假设位置是我们的纹理位置,纹理是我们加载的纹理。

Rectangle boundingRect = new Rectangle(position.X, position.Y, position.X + texture.Width, position.Y + texture.Height);

此外,如果您的游戏是2D游戏,除非您被迫,否则不应使用Vector3存储位置。尝试使用Vector2,它会为你节省一些内存。

干杯!