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.