我试图找出为什么我的大盒子不包含较小的盒子。
我有以下内容:
BoundingBox b = new BoundingBox(new Vector3(soldier.Position.X - 0.3f, soldier.Position.Y, soldier.Position.Z + 0.2f), new Vector3(soldier.Position.X + 0.3f, soldier.Position.Y + 1.8f, soldier.Position.Z - 0.2f));
BoundingBox b2 = new BoundingBox(new Vector3(soldier.Position.X - 0.015f, soldier.Position.Y + 0.01f, soldier.Position.Z + 0.07f), new Vector3(soldier.Position.X + 0.015f, soldier.Position.Y + 0.015f, soldier.Position.Z - 0.055f));
Console.WriteLine(b.Contains(b2));
Console.WriteLine(soldier.Position);
BoundingBoxRenderer.Render(b, GraphicsDevice, cam.View, cam.Projection, Color.Red);
BoundingBoxRenderer.Render(b2, GraphicsDevice, cam.View, cam.Projection, Color.White);
并打印出“Disjoint”。但是,较小的盒子(b2)肯定在较大的盒子(b)内。它打印脱节是否有原因?
它在红色框(b)内画出白框(b2)就好了。 但是,它会打印出来:
Disjoint
{X:22.5 Y:0 Z:-21.5}
我的边框有问题吗?
答案 0 :(得分:0)
我的边框有问题吗?
是。你的盒子里面外面。 对于所有边界框; min.x必须是max.x的较低值。 min.y必须是max.y的较低值。 min.z必须是max.z。
的较低值但对于你的两个盒子,min.z的值大于max.z.由于这与所需要的相反,这将导致您的盒子失败。
为什么它似乎正确渲染?
也许您的渲染代码存在问题,即否定Z分量。