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