Nun, ich bin neu in LibGDX und Java und ich versuche, ein Spiel zu erstellen, indem ich Tutorials über was ich tun muss.LibGDX instanceof und dies
hier ist also die Frage, die ich bestimmte Objekte haben Kollision zu überprüfen, mit und
public void beginContact(Contact contact)
{
if((contact.getFixtureA().getBody().getUserData() == "player" && contact.getFixtureB().getUserData() instanceof InteractiveTileObjects))
{
Gdx.app.log("Yeah","");
}
, die perfekt funktioniert, aber wenn ich zu InteractiveTileObjects der letzte Teil des Codes gehen Befestigung = body.createFixture (FdEF) ; Ich verwende es, umUserData auf diese spezifischen Objekte zu setzen. Hier ist der Code:
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);
Und das ist eine meiner spezifischen Objekte unter:
public class DreamCatcher extends InteractiveTileObjects {
public DreamCatcher(World world, TiledMap map, Rectangle bounds)
{
super(world, map, bounds);
fixture.setUserData(this);
setCategoryFilter(MainClass.BIT_DCATCHER);
}
Wie Sie ich sehen
fixture.setUserData(this)
und wenn ich dies
ändernfixture.setUserData("DreamCatcher")
Es funktioniert nicht in meinem beginContact-Teil wegen der instanceof InteractiveTileObjects. Aber wieder in Kontakt beginnen, wenn ich
contact.getFixtureB().getUserData() == "DreamCatcher"
ändern funktioniert es wieder perfekt, was ist, dass „dies“ zu tun, dass Instanceof Code zu arbeiten? Ich meine, warum ist das so?
Ich weiß, es ist lang, aber ich würde mich freuen, wenn jemand diese beantworten können ...
Als Starter scheinen Sie Zeichenfolgen mit dem Operator "==" zu vergleichen; Dies vergleicht Objektverweise, aber nicht die tatsächlichen Werte der Zeichenfolgen. Verwenden Sie stattdessen etwas wie contact.getFixtureA(). GetBody(). GetUserData(). Equals ("player"). Der Rest Ihrer Frage ist wirklich ziemlich unklar. – Pyves