2012-09-22 4 views
2

두 개의 스프라이트를 하나로 결합하고 싶습니다. 예 :하나의 스프라이트에서 두 개의 스프라이트 결합하기 (Libgdx)

private Sprite spriteGirl; 
private Sprite spriteSweater; 
private Sprite spriteDressed; 
.................................................................. 
atlas = new TextureAtlas(Gdx.files.internal("data/images.pack")); 

spriteGirl = atlas.createSprite("girl"); 
spriteSweater = atlas.createSprite("sweater"); 
................................................................... 

"spriteSweater는"(특정 좌표) 스프라이트 "spriteGirl"에 위치한다. 이 조합은 "spriteDressed"스프라이트입니다.

이렇게하면 결과 스프라이트 "spriteDressed"가 애니메이션으로 표시 될 수 있습니다.

"spriteGirl"및 "spriteSweater"대신 "spriteDressed"를 별도로 이동하고 싶습니다.

도움이 매우 감사합니다.

답변

0

내가 구성하는 스프라이트를 보유하고 관리하는 복합 클래스를 만들 것입니다.

public class CompositeSprite { 

    Array<Sprite> componentSprites; 

    public CompositeSprite() { 
     componentSprites = new Array<Sprite>(); 
    } 

    public void addComponentSprite(Sprite sprite) { 
     componentSprites.add(sprite); 
    } 

    // ... other methods left out for brevity 

    public void draw(SpriteBatch spriteBatch) { 
     for (Sprite sprite : componentSprites) { 
      sprite.draw(batch) 
     } 
    } 

} 
+0

감사합니다. 어쨌든, 그리기 전에 스프라이트를 결합하려고 생각했습니다. "spriteGirl"을 그리며 점 (x, y)에 (임의로) 이동하는 경우이 위치는 "spriteSirl"이 "spriteGirl"의 단계를 따라갈 수 있도록 연속적으로 계산되어야하며 상대 위치를 유지해야합니다. 대신 드로잉 (spriteDressed) 전에 스프라이트를 결합하면 위치를 추정 할 필요가 없습니다. – user1691159

+0

그런 경우 픽스맵을 만들고 두 이미지를 모두 그려서 텍스처를 만듭니다. 이것은 매우 효율적이지는 않지만 요구 사항에 부합한다는 점에 유의하십시오. 나는 여전히 더 나은 효율성과 더 큰 유연성을 제공 할 것이기 때문에 합성 접근법을 시도하는 것을 추천 할 것이다. –

+0

도움 주셔서 대단히 감사합니다. 나는 두 접근법을 모두 시도 할 것이다. – user1691159