【发布时间】:2012-09-11 01:56:57
【问题描述】:
我正在开发一款飞机战斗机游戏,但在计算飞行路径时遇到了一些问题......
当平面传感器与他雷达中的某个物体发生碰撞时,他应该转向某个方向以避免它,但我无法做到这一点,因为我无法找到碰撞的确切位置。
我正在使用这个(仅相关部分):
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
谢谢
【问题讨论】:
-
确认一下,这个函数是被world里面的物理引擎调用的。对吗?
-
哼...不!在构造函数上,我设置:world.setContactListener(myContactListenerInstance)... 然后物理引擎在对象碰撞时自动调用 BeginContact。
-
是的,这听起来很正确。我刚刚注意到您正在与传感器发生碰撞,请参阅我的回答。
标签: java box2d game-engine libgdx