2013-11-24 5 views
2

Box2d 본문에 스프라이트를 적용하는 방법을 알고 있지만 텍스처를 적용하는 방법이 있습니까? 기본적으로 내가 뭘하려고 오전 한 질감을 가지고하는 것입니다, 그냥이 이미지에서 땅처럼 몸이 모든 것을 반복 한 후 32 × 32 등을 가정 해 봅시다 :텍스처가있는 Box2D 바디?

enter image description here

는 LibGDX이 가능합니까?

편집 :

내 최신 시도 :

Fixture fixture = body.createFixture(fixtureDef); 
     Vector2 mTmp = new Vector2(); 
     PolygonShape shape = (PolygonShape) fixture.getShape(); 
     int vertexCount = shape.getVertexCount(); 
     float[] vertices = new float[vertexCount * 2]; 
     for (int k = 0; k < vertexCount; k++) { 
      shape.getVertex(k, mTmp); 
      mTmp.rotate(body.getAngle()* MathUtils.radiansToDegrees); 
      mTmp.add(body.getPosition()); 
      vertices[k * 2] = mTmp.x * PIXELS_PER_METER; 
      vertices[k * 2 + 1] = mTmp.y * PIXELS_PER_METER; 
     } 
     short triangles[] = new EarClippingTriangulator().computeTriangles(vertices).toArray(); 

     Texture texture = new Texture(Gdx.files.internal("data/block.png")); 
     texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

     TextureRegion textureRegion = new TextureRegion(texture, 0, 0, texture.getWidth(), texture.getHeight()); 

     PolygonRegion region = new PolygonRegion(textureRegion, vertices, triangles); 

     poly = new PolygonSprite(region); 

와의

렌더링 :

polyBatch.begin(); 
     poly.draw(polyBatch); 
     polyBatch.end(); 

하지만 아무것도 그리지 않습니다.

enter image description here

하나의 다각형 (빨간색 원 안에 표시) 텍스처를 가져옵니다

수준의 다른 모양을 가져온 후,이 결과를 얻을. 전체 레벨을 JSON 파일로 가져옴

답변

3

예 libgdx에서 가능합니다.

당신은 당신이 반복하려는 지역은 그 다음

PolygonRegion region = new PolygonRegion(textureRegion, vertices, triangles); 

textureRegion에 대한 다각형 영역을 작성해야합니다. 정점과 삼각형은 영역의 모양을 정의합니다.

이 다각형 영역은 정점과 삼각형에서 빨간색으로 반복되는 텍스처입니다. 이 영역은 스프라이트 배치와 마찬가지로 폴리곤 배치를 사용하여 렌더링 할 수 있습니다.

UPDATE

PolygonShape shape = (PolygonShape) fixture.getShape(); 
int vertexCount = shape.getVertexCount(); 
float[] vertices = new float[vertexCount * 2]; 
for (int k = 0; k < vertexCount; k++) { 
    shape.getVertex(k, mTmp); 
    mTmp.rotate(body.getAngle()* MathUtils.radiansToDegrees); 
    mTmp.add(bodyPos); 
    vertices[k * 2] = mTmp.x * PIXELS_PER_METER; 
    vertices[k * 2 + 1] = mTmp.y * PIXELS_PER_METER; 
} 
short triangles[] = new EarClippingTriangulator() 
     .computeTriangles(vertices) 
     .toArray(); 
PolygonRegion region = new PolygonRegion(
     textureRegion, vertices, triangles); 
+0

하지만 난 정점과 삼각형으로 내 Box2D의 지상 다각형을 변환 어떻게? –

+0

@RohitMalish http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/EarClippingTriangulator.html – noone

+0

@RohitMalish는 위의 요구 사항에 맞는 코드를 사용합니다. –