Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在联系人侦听器上使用BeginContact时,我的WorldManifold始终在所有点上返回0,0。。。为什么?_Java_Box2d_Game Engine_Libgdx - Fatal编程技术网

Java 在联系人侦听器上使用BeginContact时,我的WorldManifold始终在所有点上返回0,0。。。为什么?

Java 在联系人侦听器上使用BeginContact时,我的WorldManifold始终在所有点上返回0,0。。。为什么?,java,box2d,game-engine,libgdx,Java,Box2d,Game Engine,Libgdx,我正在开发一款战斗机游戏,在计算飞行轨迹时遇到了一些问题 当飞机传感器与雷达中的某个物体相撞时,他应该转向某个方向以避免碰撞,但我无法做到,因为我无法找到碰撞的确切位置 我正在使用此(仅相关部分): 变量点0始终具有值(0,0),worldManifold.numContactPoints始终=0。为什么? 它正在碰撞一个传感器和一个静止的物体 与此tut()的唯一区别在于,我正在使用libgdx、tileAtlas和tileMapRenderer构建世界,以便将所有静态装置连接到同一实体 很抱

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

当飞机传感器与雷达中的某个物体相撞时,他应该转向某个方向以避免碰撞,但我无法做到,因为我无法找到碰撞的确切位置

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

变量点0始终具有值(0,0),worldManifold.numContactPoints始终=0。为什么?

它正在碰撞一个传感器和一个静止的物体

与此tut()的唯一区别在于,我正在使用
libgdx
tileAtlas
tileMapRenderer
构建世界,以便将所有静态装置连接到同一实体

很抱歉,如果这是一个noob问题,我无法在几天内找到解决方案

也张贴在这里:


感谢

与传感器固定装置的碰撞不会导致任何碰撞响应,因此歧管中没有点,因为发动机不需要计算它们


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

仅需确认,这个函数正在被内部世界的物理引擎调用。向右走?哼。。。不在构造函数上,我设置:world.setContactListener(myContactListenerInstance)。。。当物体碰撞时,物理引擎会自动调用BeginContact。是的,听起来不错。我刚刚注意到你与传感器相撞,请看我的答案。谢谢你的回复!事实上,我需要检查碰撞发生在哪里,以使飞机转向oposite一侧,并避免,例如,一堵墙。有没有更好的办法?
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);

    // ...

}