2017-02-04 26 views
-1

私にはContactListenerが接続されています。私はSpriteを拡張するEnemyクラスとSpriteを拡張するPlayerクラスを持っています。彼らが衝突したら、私はbeginContactに送られますが、それから敵が私のプレイヤーを後方にドラッグし始めます。私はそれを望んでいません。彼らが衝突するときに私はbeginContactに送られたいですが、彼らはお互いの道に影響しません。libgdx衝突のないContactListener

+0

Box2dのContactListenerとSpriteの子であるEnemyとPlayerクラスとの間に関連はありますか? – Aryan

答えて

0

私が正しく理解していれば、衝突が検出され、その衝突によって生成されたインパルスが抑制されます。

オプション1

治具の一つのセンサーを行いますが、少なくとも2つのオプションがあります。このようにして、あなたはまだ衝突するでしょうが、お互いに反発している身体を持つことはありません。

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

オプション2

これは、より多くのあなたが心の中に持っているものかもしれません。あなたがいる限り2つのエンティティが衝突しているようsetEnabled(false)ごとBOX2D世界のステップを呼び出す維持する必要があり

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

注:衝突の物理effetcsを回避するには、このような接触を破棄することができます。

MoreOn

あなたはそこにどのように衝突仕事上の詳細を読むことができます:http://www.iforce2d.net/b2dtut/collision-callbacks。センサーの場合、情報はインターネット上で広く入手可能です。

関連する問題