所有
我们试图让一些交叉碰撞起作用,但问题的经验是矩形没有重叠修正纹理。
纹理是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
班级中的公共成员Net
,ballRect
等同于Ball
班级。{/ p>
所以我的问题是如何才能让Rectangle
叠加层正确显示在纹理上,以便碰撞与整个网纹理相对应?是否有更好的方法来放置这个叠加层?
非常感谢你。
干杯。
答案 0 :(得分:1)
我假设您的纹理是2D,因为您说的是纹理,而您使用的是矩形而不是BoundingBox。
在这种情况下,回答非常简单。
要设置碰撞属性,请按照以下步骤操作。让我们假设位置是我们的纹理位置,纹理是我们加载的纹理。
Rectangle boundingRect = new Rectangle(position.X, position.Y, position.X + texture.Width, position.Y + texture.Height);
此外,如果您的游戏是2D游戏,除非您被迫,否则不应使用Vector3存储位置。尝试使用Vector2,它会为你节省一些内存。
干杯!