Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.05.2014, 16:25

[Java] LibGDX BoundingBox Kollisionserkennung

Hallo,

ich verwende die standard LibGDX Methode intersect um zu überprüfen ob ein Quadrat in einem anderen liegt. Dazu habe ich folgende:

Initialisierung von zwei Quadraten in der "create" Methode:

Quellcode

1
2
3
4
5
6
7
8
     // ModelFixed
      modelFixed = modelBuilder.createBox(5f, 5f, 5f, new Material(ColorAttribute.createDiffuse(Color.GRAY)), Usage.Position | Usage.Normal);
      instances.add(new ModelInstance(modelFixed));

      // ModelDyn
      modelDyn = modelBuilder.createBox(5f, 5f, 5f, new Material(ColorAttribute.createDiffuse(Color.BLUE)), Usage.Position | Usage.Normal);
      instances.add(new ModelInstance(modelDyn));
      instances.get(1).transform.setTranslation(6f, 0f, 0f);


Prüfung in der Render Methode:

Quellcode

1
2
3
4
5
6
7
8
9
BoundingBox bb1 = instances.get(0).calculateBoundingBox(new BoundingBox()).mul(instances.get(0).transform);
      BoundingBox bb2 = instances.get(1).calculateBoundingBox(new BoundingBox()).mul(instances.get(1).transform);

      if (Gdx.input.isKeyPressed(Keys.LEFT)) {
         if (bb1.intersects(bb2)) {
            Matrix4 model = instances.get(1).transform;
            model.translate((delta / speed) - 1f, 0f, 0f);
         }
      }


Die bb1 ist immer auf Position 0,0,0. Deswegen liefert intersects immer true zurück.

Hat jemand eine Idee oder schon mal das gleiche Problem gehabt?

LG D0sed.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

04.05.2014, 16:40

Wieso sollte bb1 auch jemals woanders sein? Es wird doch nie verschoben. Jedenfalls nicht in Deinem Code da.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

04.05.2014, 16:47

Es wird bei 5f 5f 5f initialisiert ;)

Edit: Hast recht, cube steht bei 0f 0f 0f, die kollision sollte jedoch nicht vorhanden sein. trozdem wird true zurückgeliefert. Auch nach der richtigen initialisierung

4

04.05.2014, 16:54

Sorry für den Beitrag, mit ner negierung funktionierts. Whatever, gestern den halben tag gerätselt, nun wieder mit ner negierung probiert und jetzt klappts o.O Hing bestimmt mit der Initialisierung zusammen.

Danke!

Werbeanzeige