2014-06-05 6 views
0

나는 이전 질문을 다시 공식화 할 것입니다. 낮부터 밤까지 게임 변경 배경을 원합니다. 이것은 게임을 2 ~ 3 번 시도한 후에 수행되어야합니다. 낮과 밤에 서로 다른 textureRegions의 텍스처가 있습니다. 도움을 주시면 대단히 감사하겠습니다. 나는 일식과 함께 일한다.세 번 시도한 후 libgdx 배경 변경

public void changeBG(int x){ 
if(x < 3){ 
drawDAY(); 
} 
else if (x < 6) 
{ 
drawNIGHT(); 
} 
} 
private void drawNIGHT() { 
    // TODO Auto-generated method stub 
} 
private void drawDAY() { 
    // TODO Auto-generated method stub} 
} 

이 내가 내 GameWorld.java에있는 것입니다

DAY= new TextureRegion(texture, 0, 0, 287, 512); 
DAY.flip(false, true); 
NIGHT= new TextureRegion(texture, 291, 0, 287,512); 
NIGHT.flip(false, true); 

이것은 내 GameRenderer.java이 무엇인지 내 AssetLoader.java 무엇을 가지고 있습니다

public void update(float delta) { 
    runTime += delta; 

    switch (currentState) { 
    case READY: 
    case MENU: 
     updateReady(delta); 
     break; 
    case RUNNING: 
     updateRunning(delta); 
     break; 
    default: 
     break; 
    } 
    } 
public boolean isReady() { 
    return currentState == GameState.READY; 
    } 

충분한 정보가되기를 바랍니다. 인사말.

답변

0

음, 전체 질감을 유지하는 스프라이트가 있다고 가정 해 보겠습니다.

Sprite timeOfDay = new Sprite(texture); 

그런 다음 changeBG (int x) 메소드를 조정하면됩니다. Sprite를 원하는 Region으로 적절하게 설정할 수 있습니다. 당신이

timeOfDay.draw(batch); 

난이 도움이되기를 바랍니다까지 배치를 설정 한 후

public void changeBG(int x){ 
    if(x < 5) //Assuming x is the time 
     timeOfDay.setRegion(DAY); 
    else 
     timeOfDay.setRegion(NIGHT); 
} 

다음 무승부() 메서드

.

[업데이트]

당신의 렌더링 방법에 낮과 밤 그릴 필요가 없습니다. Time of Day는 DAY 및 NIGHT 텍스처를 유지합니다. 전화 할 때

timeOfDay.draw(batch); 

렌더링합니다. setRegion을 렌더링합니다.

귀하의 내가 부분적으로 이전의 대답에 말했듯

public void draw(){ 
    batcher.begin(); 
    timeOfDay.draw(batcher); 
    batcher.end(); 
} 
+0

을 빠른 답변 감사합니다. Java 및 libgdx에 익숙하지 않습니다. 도움이 될 것입니다. 내 AssetLoader에있는 것입니다. Sprite timeOfDay = new Sprite (texture); \t \t 공개 무효 changeBG (INT의 X) { \t \t (X <5) \t \t timeOfDay.setRegion (DAY) 경우; \t else \t \t timeOfDay.setRegion (NIGHT); \t \t \t – Joopklep

+0

내 GameRenderer에서 .... DAY.setRegion (291, 0, 287, 512); \t \t DAY.flip (false, true); \t \t batcher.draw (DAY, 0, midPointY -120, 136, 243); \t \t NIGHT.setRegion (0, 0, 287, 512); \t \t NIGHT.flip (false, true); \t \t batcher.draw (NIGHT, 0, midPointY -120, 136, 243); \t timeOfDay.draw (배터); 좀 도와주세요. – Joopklep

+0

위의 수정 된 코드 참조 – compulsivestudios

0

는 당신이 처음부터해야 할 것은 다음과 같은 꽤 많이입니다 ....의 모양은 렌더링 :

DAY= new TextureRegion(texture, 0, 0, 287, 512); 
DAY.flip(false, true); 
NIGHT= new TextureRegion(texture, 291, 0, 287,512); 
NIGHT.flip(false, true); 

그럼 당신은 스프라이트를 만들 :

Sprite sprite = new Sprite(DAY); 

을 나는 당신이 일의 크기로 설정됩니다 같은데요 단지 노골적으로 화면과에 가서 당신이 Scene2d 또는 직교가 또는 변환 사용 여부에 따라 달라 전자 화면이 좌표

sprite.setSize(Gdx.graphics.width, Gdx.graphics.height); 

또는 게임의 논리에 따라 이후

sprite.setSize(virtualWidth, virtualHeight); //in new version of LibGDX this is standard 640x480 

그리고

, TextureRegion을 변경하고 싶을 것입니다., 당신은 기본 설정을 사용할 필요가 얼마나 많은 당신이 시도 한 번 저장하려면

당신이 (가)에서 다음과 같이 번호를 추가 할 경우 :

private static Preferences preferences; 

@Override 
public void create() 
{ 
    preferences = Gdx.app.getPreferences(Resources.preferencesName); 
    ... 

public static Preferences getPreferences() 
{ 
    return preferences; 
} 

게임이 끝난 후, 다음을 수행 게임은 끝났어 시도의 수를 변경하려면 다음

int currentTries = MyGame.getPreferences().getInt("numberOfTries"); 
    currentTries++; 
    currentTries %= 6; 
    MyGame.getPreferences().putInt("numberOfTries", currentTries); 
    MyGame.getPreferences().flush(); 
    changeBG(currentTries); 

을 그리고 당신은 현재의 텍스처 지역 변경 :

public void changeBG(int x){ 
    if(x < 3) { 
     sprite.setRegion(DAY); 
    } 
    else if (x < 6) { 
     sprite.setRegion(NIGHT); 
    } 
} 
+0

감사합니다. Zhuinden, 이것은 제가 지금 가지고있는 것입니다 : private static Preferences preferences; \t \t public void create() \t { prefs = Gdx.app.getPreferences ("JoopklepsGame"); int currentTries = Gdx.app.getPreferences ("JoopklepsGame"). getInteger ("numberOfTries"); currentTries ++; currentTries % = 6; Gdx.app.getPreferences ("JoopklepsGame"). putInteger ("numberOfTries", currentTries); Gdx.app.getPreferences ("JoopklepsGame"). flush(); changeBG (currentTries); } \t public static Preferences getPreferences() \t { 반환 환경 설정; } – Joopklep

+0

어디에 put sprite.setSize ??? 저는 자산 로더에 모든 것을 넣었습니다. 저는 Eclipse를 사용합니다. 인사말 Jooklep. – Joopklep

+0

Sprite가 생성 된 후, 올바르게 알았다면. 하지만 AssetManager를 사용한다면 코드를 게시하여 프로젝트에서 사용하지 않았으므로 코드를 함께 게시해야합니다. – EpicPandaForce

관련 문제