XNA 矩形叠加在相交碰撞的纹理上

本文关键字:碰撞 纹理 叠加 XNA | 更新日期: 2023-09-27 18:33:48

all.

我们试图让一些相交碰撞工作,但问题经验是矩形不会覆盖纹理校正。

纹理是 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));

我们遇到的问题是矩形绘制在纹理((上方,调整高度确实会使其对齐更多,但只有上面的内容可以与带有g_Ball.ballRectIntersect(g_Net.netRect)的球对象碰撞。 netRectNet类中的公共成员RectangleballRect等效于Ball类。

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

提前非常感谢你。

干杯。

  • 山 姆。

XNA 矩形叠加在相交碰撞的纹理上

我假设你的纹理是2D的,因为你说的是纹理,你使用的是矩形而不是边界框。

在这种情况下,这很容易回答。

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

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

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

干杯!