【问题标题】:Bounding Box Collision - 3D XNA边界框碰撞 - 3D XNA
【发布时间】:2013-04-01 14:56:24
【问题描述】:

基本上,我想在 XNA 中的 3D 模型周围放置一个边界框/立方体(在这种情况下,它是一个简单的绘画,因此模型本身只是一个带纹理的矩形)。

我尝试了以下代码来创建多维数据集:

    public BoundingBox BoundingBoxCreation()
    {
        min = Position + Vector3.Up * Height - Size / 2
        max = Position + Vector3.Up * Height - Size / 2;

        boundingBox = new BoundingBox(min, max);
        return boundingBox; 
    }

然后我创建两个相同的模型,具有相同的高度、大小和比例: Scale: new Vector3(500.0f) 高度:2f 大小:new Vector3(6.75f * 500, -1.09f * 500, 0.35f * 500) (乘以比例)。然后我尝试像这样检查两者之间的碰撞:

if (CollisionTest.boundingBox.Intersects(tapestryLeftOne.boundingBox))
   {
      Window.Title = "Collision";
   } 

但是,只有当两者绝对 100% 完全对齐时,窗口标题才会更改以显示碰撞,但我的目标是尝试做到这一点,即使它们在任何时候都接触,而不仅仅是在它们匹配时。 关于如何实现这一目标的任何想法?

如果有更好的方法来构建边界框/立方体并检测另一个边界立方体、球体等之间的碰撞,那么如果您能告诉我,我将非常感激。

【问题讨论】:

    标签: 3d xna collision


    【解决方案1】:

    根据您拥有的代码,最小值和最大值是相同的。这可以解释为什么它们只有在完全对齐时才会相交。以后要修改边界吗?

    您所做的看起来是正确的,但您也可以尝试包含并检查 4 个角 (Vector3) 如果框大小相同

    有关模型边界框的更多信息 http://www.toymaker.info/Games/XNA/html/xna_bounding_box.html

    【讨论】:

    • 您好,感谢您就这个问题回复我。我明天会先试试这个,如果这解决了我的问题,我会告诉你。
    • 我设法让边界框与我的最小值和最大值一起工作。只需将 + 更改为 - on min 因为我正在创建一个大小为零的框,解释了为什么它必须完全对齐才能检测到碰撞。但是我现在遇到了另一个问题。出于某种原因,当我在模型周围绘制盒子时,它看起来离模型本身很远。你知道有什么方法可以解决这个问题吗? (如有需要可提供截图)
    猜你喜欢
    • 2013-02-18
    • 2012-03-23
    • 2013-08-10
    • 2011-04-21
    • 1970-01-01
    • 2012-12-06
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多