センサーボディでプレーヤーの衝突を検出しようとしています。プラットフォーマーでコレクティブルを想像してみてください...プレーヤーがコレクティブルに衝突したときにイベントを実行したいと思います。Libdgx Box2D - 衝突の検出
私のコードからわかるように、私は動的オブジェクトをコレクティブオブジェクトに加えて、プレーヤーがセンサーに衝突したときにプレイヤーの衝突のイベントを付けることを望んでいるセンサーボディを付けています。 "ContactListener"インターフェースがあるようですが、メソッドの実装は何もしないようです。これをどうやってやりますか?以下のいずれかを行うためのより良い方法がある場合は
、何かアドバイスをいただければ幸いです:)
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Contact;
import com.badlogic.gdx.physics.box2d.ContactImpulse;
import com.badlogic.gdx.physics.box2d.ContactListener;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.Manifold;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
public class CoinCollectible extends GameObject{
public CoinCollectible(Vector2 position, float angle){
bodyDef.type = BodyType.DynamicBody;
bodyDef.position.x = position.x;
bodyDef.position.y = position.y;
bodyDef.angle = angle;
PolygonShape poly = new PolygonShape();
poly.setAsBox(1, 1);
FixtureDef itemFixture = new FixtureDef();
itemFixture.shape = poly;
itemFixture.density = 1;
itemFixture.filter.categoryBits = PhysicsLayers.LAYER_ITEM;
itemFixture.filter.maskBits = PhysicsLayers.MASK_PLAYER;
fixtureArray.add(itemFixture);
massData.mass = 1f;
// Attach a collision sensor
FixtureDef sensorFixture = new FixtureDef();
sensorFixture.shape = poly;
sensorFixture.isSensor = true;
sensorFixture.filter.maskBits = PhysicsLayers.LAYER_PLAYER;
fixtureArray.add(sensorFixture);
// Clean up
poly.dispose();
}
}
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.MassData;
import com.badlogic.gdx.physics.box2d.World;
public class GameObject{
public Body body = null;
public BodyDef bodyDef = new BodyDef();
public MassData massData = new MassData();
protected List<FixtureDef> fixtureArray = new ArrayList<FixtureDef>();
public GameObject(){}
public Body addToWorld(World world){
if(bodyDef == null)
return null;
body = world.createBody(bodyDef);
while(fixtureArray.size() > 0){
body.createFixture(fixtureArray.remove(0));
}
body.setMassData(massData);
return body;
}
}
間違っているかを説明してくださいOPのコードで、なぜあなたの答えを編集して問題を解決するのか* –