2012-04-07 5 views
2

I`m versucht, eine polygonale Physik Körper durch einen solchen Code zu erzeugen:merkwürdige Fehler beim Erstellen der Physik Körper in AndEngine

 final float halfWidth = pAreaShape.getWidthScaled() * 0.5f/PIXEL_TO_METER_RATIO_DEFAULT; 
     final float halfHeight = pAreaShape.getHeightScaled() * 0.5f/PIXEL_TO_METER_RATIO_DEFAULT;    
     final float centerX = 0; 
     final float left = -halfWidth; 
     final float right = halfWidth; 
     final float top = -halfHeight + 9f/PIXEL_TO_METER_RATIO_DEFAULT; 
     final float bottom = halfHeight; 

     final PolygonShape shape1 = new PolygonShape(); 

     final Vector2[] vertices = { 
       new Vector2(centerX, bottom), 
       new Vector2(left+8f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-19f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(left+7f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-23f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(left+10f/PIXEL_TO_METER_RATIO_DEFAULT, top+14f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(left+13f/PIXEL_TO_METER_RATIO_DEFAULT, top+8f/PIXEL_TO_METER_RATIO_DEFAULT), 

       new Vector2(right-14f/PIXEL_TO_METER_RATIO_DEFAULT, top+8f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(right-11f/PIXEL_TO_METER_RATIO_DEFAULT, top+14f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(right-9f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-23f/PIXEL_TO_METER_RATIO_DEFAULT), 
       new Vector2(right-10f/PIXEL_TO_METER_RATIO_DEFAULT, bottom-19f/PIXEL_TO_METER_RATIO_DEFAULT) 
     }; 

     Body body = PhysicsFactory.createPolygonBody(pPhysicsWorld, pAreaShape, vertices, pBodyType, pFixtureDef); 

Variable Vertices enthält Eckpunkte dieser Form.

Und es funktioniert nicht - Anwendungen startet (zeigt schwarzen Bildschirm und Anwendungen Titelleiste), als es ohne Fehler abgebrochen wird (es gibt keinen Absturzdialog und keine Fehler in LogCat).

ABER wenn ich eines der Elemente der Vertices-Array löschen, funktioniert es gut.

Was mache ich falsch?

Antwort

3

Box2D hat maximal 8 Scheitelpunkte in einem Polygon und wird bei Angabe von mehr durch Assertion fehlschlagen. Ich bin mir nicht sicher, welche Version von Box2D ANDEngine verwendet, aber versuchen Sie eine Schleife oder Kantenform

+0

ja, du hast Recht. Aber ich frage mich immer noch, warum die Anwendung abstürzt, ohne einen Fehlerbericht zu haben. Danke trotzdem – Ashot

+0

möglich, weil es durch Assertion fehlgeschlagen ist, was normalerweise den Prozess abstürzt. Wenn Assertionen für den nativen Build nicht aktiviert waren, wäre der Zugriff wahrscheinlich durch den ungültigen Speicherort fehlgeschlagen. Im Grunde war es wahrscheinlich ein harter Unfall –

Verwandte Themen