2013-07-18 2 views
0

을 포함하지 그리는Libgdx Box2D의 배치는 나는 다음과 같은 몸이 정의한 전체 다각형

batch.draw(slimeTexture, netBody.getPosition().x * BOX_TO_WORLD, netBody.getPosition().y * BOX_TO_WORLD, 10f/2, 125f/2, 10f, 125f, /*scaleX*/1, /*scaleY*/1, /*rotation*/ netBody.getAngle() * MathUtils.radiansToDegrees, 0, 0, 10, 125, /*flipX*/false, /*flipY*/false); 

하지만 내 최종 결과는 이것이다 :

http://s16.postimg.org/i1bh331th/show.png

나는 이것을 원으로 만들었지 만 그것은 매력처럼 작동했지만 나는 여기에서 잘못하고있는 것을 생각해보십시오. 내가 망쳐 놓은 것을 설명 할 수있는 어떤 치료라도하므로 나는 다시하지 않을 것인가?

답변

0

setAsBox ..를 사용할 때 반 높이와 반 너비를 제공해야합니다. 그 이유는 텍스트가 1/4 크기로 그려지기 때문입니다. 그리고 기본적으로 상자를 그릴 때 본문 원점이 중심이므로 설정해야하는 텍스트의 위치

(bodyPOs.x - width/2, bodyPos.y - height/2); 




    netDef = new BodyDef(); 
    netDef.position.set(new Vector2((Gdx.graphics.getWidth()/2) * WORLD_TO_BOX , 158f * WORLD_TO_BOX)); 
    netBody = world.createBody(netDef); 
    PolygonShape netShape = new PolygonShape(); 
    netShape.setAsBox(10f * WORLD_TO_BOX, 125f * WORLD_TO_BOX); // wrong 
    netShape.setAsBox(10f * WORLD_TO_BOX/2f, 125f * WORLD_TO_BOX/2f); // divide by 2(right) 

netBody.createFixture(netShape, 0f); 
netShape.dispose(); 


batch.draw(slimeTexture, netBody.getPosition().x * BOX_TO_WORLD - /*width/2f*/ 10/2, netBody.getPosition().y * BOX_TO_WORLD - /**height/2*/ 125/2f, 10f/2, 125f/2, 10f, 125f, /*scaleX*/1, /*scaleY*/1, /*rotation*/ netBody.getAngle() * MathUtils.radiansToDegrees, 0, 0, 10, 125, /*flipX*/false, /*flipY*/false); 
관련 문제