私は実際にLibGDXとJavaを初めて使いました。私は何が必要かについてのチュートリアルを見ながらゲームを作成しようとしています。LibGDX instanceof and this
だからここに私は完璧な作品との衝突や
public void beginContact(Contact contact)
{
if((contact.getFixtureA().getBody().getUserData() == "player" && contact.getFixtureB().getUserData() instanceof InteractiveTileObjects))
{
Gdx.app.log("Yeah","");
}
をチェックするために、特定のオブジェクトを持っている問題は、だ 私はInteractiveTileObjectsに行くときのコードの最後の部分は、フィクスチャ= body.createFixture(FDEF)であります;私はその特定のオブジェクトにsetUserDataを使用します。ここ はコードです:
bdef.type = BodyDef.BodyType.DynamicBody;
bdef.position.set((bounds.getX() + bounds.getWidth()/2)/MainClass.PPM, (bounds.getY() + bounds.getHeight()/2)/MainClass.PPM);
body = world.createBody(bdef);
shape.setAsBox((bounds.getWidth()/2)/MainClass.PPM, (bounds.getHeight()/ 2)/MainClass.PPM);
fdef.shape = shape;
fdef.filter.categoryBits=MainClass.BIT_DCATCHER;
fixture = body.createFixture(fdef);
そして、これは以下の私の特定の目的の一つである:
public class DreamCatcher extends InteractiveTileObjects {
public DreamCatcher(World world, TiledMap map, Rectangle bounds)
{
super(world, map, bounds);
fixture.setUserData(this);
setCategoryFilter(MainClass.BIT_DCATCHER);
}
あなたは私が
にこれを変更したときに、私はfixture.setUserData(this)
を使用して見ることができるように
fixture.setUserData("DreamCatcher")
それはInteractiveTileObjectsのinstanceofのために私のbeginContact部分では機能しません。 しかし、再び、私は
contact.getFixtureB().getUserData() == "DreamCatcher"
を変更した場合、それは「これは」というinstanceofのコードを動作するようにやっているものを再び完璧な作品の接触を開始? なぜそれはそれのような意味ですか?
私はそれは長い間知っている誰かがこれらに答えることができる場合、私は喜んでいるだろう...
初心者では、文字列を "=="演算子と比較しているようです。これはオブジェクト参照を比較しますが、文字列の実際の値は比較しません。 contact.getFixtureA()。getBody()。getUserData()。equals( "player")のようなものを使用してください。あなたの質問の残りの部分は実際にはかなり不明です。 – Pyves