【问题标题】:libgdx/jBox2d adding phantom bodies upon collision?libgdx/jBox2d 在碰撞时添加幻体?
【发布时间】:2013-02-25 14:49:42
【问题描述】:

我是第一次使用 libgdx 和 jBox2D(虽然我之前在其他环境中使用过 Box2D)。

我创建了一个大型动态体和两个较小的静态体以供其着陆。我的身体似乎从来没有接触过。相反,系统似乎在我的身体之间创造了非常小的身体......我不知道为什么!

下图的上半部分显示了正在进行的碰撞(右侧)和即将发生的碰撞(左侧,未着色的形状)。

下图的下半部分是几步之后的。大阴影形状围绕第一个碰撞点旋转并与未着色形状“碰撞”。

在每次碰撞的位置都有一个小红点,似乎阻止了形状的接触。我已经在多个尺度上尝试过,结果是相似的。我试过用谷歌搜索这个网站,寻找有同样问题但没有运气的人。

【问题讨论】:

    标签: box2d libgdx collision jbox2d


    【解决方案1】:

    因此,据我所知,这种情况是与多边形皮肤相关的次要(但重要)细节。

    (http://www.box2d.org/manual.html#_Toc258082970 ...向下滚动到4.4的底部)

    多边形周围有一个不可见的皮肤,用于防止相互渗透,但 Box2D 调试视图不会绘制此皮肤。由于我根据多边形而不是多边形加上皮肤来调整纹理的大小,因此存在可见的间隙。

    长话短说,我们必须自己解决皮肤问题。

    如果您有更多信息或更好的解释,我很想听听! :-)

    【讨论】:

      【解决方案2】:

      每个多边形都有一个额外的小“半径”,如文档中所述:

          /**
           * The radius of the polygon/edge shape skin. This should not be modified.
           * Making this smaller means polygons will have and insufficient for
           * continuous collision. Making it larger may create artifacts for vertex
           * collision.
           */
          public static float polygonRadius = (2.0f * linearSlop);
      

      其中使用线性斜率,定义:

          /**
           * A small length used as a collision and constraint tolerance. Usually it
           * is chosen to be numerically significant, but visually insignificant.
           */
          public static float linearSlop = 0.005f;
      

      所以这意味着你会想要

      • 增加图纸尺寸以适应这种情况,或者
      • 使您的坐标系更大,这样这个空间 (0.02) 就不会被注意到。

      我建议第二个。如果您的坐标系太小(或太大),可能会对性能产生其他影响。

      【讨论】:

        猜你喜欢
        • 2015-11-03
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2014-02-01
        • 2013-08-05
        • 2014-12-04
        相关资源
        最近更新 更多