2017-02-04 95 views
-1

我有ContactListener连接到我的世界。我得到了一个敌人类,延伸Sprite和Player类,延伸Sprite以及。当它们发生碰撞时,我确实会被发送到beginContact,但接下来发生的事情是敌人开始向后拖动我的玩家,我不想那样。我想在碰撞时被发送到beginContact,但他们不会影响其他路径。libgdx ContactListener无碰撞

+0

box2d的ContactListener与您的敌人和Player类是Sprite的子类有任何关系吗? – Aryan

回答

0

如果我理解正确,您希望检测到碰撞,并抑制该碰撞产生的冲动。存在至少两个选项有:

选项1

使一个传感器固定器的一个。这样,你仍然会发生碰撞,但没有相互重复的身体。

FixtureDef def = new FixtureDef(); 
def.isSensor = true; 

选项2

这可能是更多的是你的想法。为了避免碰撞物理effetcs,你可以放弃这样的接触:

@Override 
public void preSolve(Contact contact, Manifold oldManifold) 
{ 
    contact.setEnabled(false); 
} 

请注意,你必须保持只要两个实体碰撞调用setEnabled(false)每Box2D的世界一步。

MoreOn

你可以阅读更多关于如何碰撞的工作有:http://www.iforce2d.net/b2dtut/collision-callbacks。对于传感器,信息在互联网上广泛使用。