1

全部。

我们试图让一些相交碰撞工作,但问题体验是矩形没有覆盖纹理上的校正。

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

我们遇到的问题是 Rectangle 被绘制在纹理(Net)上方并且调整高度确实使它更加对齐,但是只有上面可以与带有 a 的球对象碰撞g_Ball.ballRectIntersect(g_Net.netRect)netRect是班级的公共成员RectangleNet并且是班级ballRect的等价物Ball

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

非常感谢您提前。

干杯。

  • 山姆。
4

1 回答 1

1

我假设您的纹理是 2D 的,因为您说的是 Texture,并且您使用的是 Rectangle 而不是 BoundingBox。

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

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

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

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

干杯!

于 2012-06-29T20:39:10.943 回答