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)
的球对象碰撞。 netRect
是Net
类中的公共成员Rectangle
,ballRect
等效于Ball
类。
所以我的问题是,如何让Rectangle
叠加层正确出现在纹理上,以便碰撞与整个网络纹理相对应?有没有更好的方法来放置这个叠加层?
提前非常感谢你。
干杯。
- 山 姆。
我假设你的纹理是2D的,因为你说的是纹理,你使用的是矩形而不是边界框。
在这种情况下,这很容易回答。
若要设置碰撞属性,请按以下步骤操作。假设位置是我们的纹理位置,纹理是我们加载的纹理。
Rectangle boundingRect = new Rectangle(position.X, position.Y, position.X + texture.Width, position.Y + texture.Height);
此外,如果您的游戏是 2D 游戏,则不应使用 Vector3 来存储位置,除非您被迫这样做。尝试使用 Vector2,它会为您节省一些内存。
干杯!