3

我正在开发一款飞机战斗机游戏,但在计算飞行路径时遇到了一些问题......

当平面传感器与雷达中的某个物体发生碰撞时,他应该转向某个方向以避免它,但我无法这样做,因为我无法找到碰撞的确切位置。

我正在使用这个(仅相关部分):

public void beginContact(Contact contact) 
{
    Fixture f1 = contact.getFixtureA();
    Fixture f2 = contact.getFixtureB();

    int numpoints = contact.getWorldManifold().getNumberOfContactPoints();
    WorldManifold wm = contact.getWorldManifold();
    Vector2 point0 = new Vector2(wm.getPoints()[0].x, wm.getPoints()[0].y);

    // ...

}

var point0 始终具有值 (0,0) 并且 worldManifold.numContactPoints 始终 = 0。为什么?

它正在碰撞传感器和静态物体。

与这个 tut ( http://www.iforce2d.net/b2dtut/collision-anatomy ) 的唯一区别是我使用libgdx,tileAtlastileMapRenderer来构建世界,因此所有静态装置都连接到同一个主体上。

抱歉,如果这是一个菜鸟问题,几天后我找不到解决方案。

还张贴在这里:http ://badlogicgames.com/forum/viewtopic.php?f=11&t=5417#p25961

谢谢

4

1 回答 1

5

与传感器夹具的碰撞不会引起任何碰撞响应,因此歧管中没有点,因为引擎不需要计算它们。

如果您需要碰撞点而没有任何碰撞响应,您可以更改传感器状态,使两个灯具都不是传感器,然后在您的接触侦听器的 BeginContact 和 PreSolve 函数中,您可以执行 contact->SetEnabled(false) 以便没有碰撞发生响应。

于 2012-09-12T20:20:06.197 回答