我正在开发一种平面战斗机游戏,我在计算飞行路径时遇到了一些问题......
当平面传感器与雷达中的某个物体发生碰撞时,他应该转向某个方向以避开它,但我无法做到,因为我找不到确切的碰撞位置。
我正在使用此(仅相关部分):
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
,tileAtlas
和tileMapRenderer
构建世界,以便附加所有静态装置同一个机构。
很抱歉,如果这是一个菜鸟问题,我几天都找不到解决方案。
也发布在这里:http://badlogicgames.com/forum/viewtopic.php?f=11&t=5417#p25961
由于
答案 0 :(得分:4)
与传感器夹具的碰撞不会引起任何碰撞响应,因此歧管中没有点,因为引擎不需要计算它们。
如果您需要碰撞点而没有任何碰撞响应,您可以更改传感器状态,使两个灯具都不是传感器,然后在您的联系人监听器的BeginContact和PreSolve函数中,您可以联系 - > SetEnabled(false)这样就不会发生碰撞反应。