2013-09-23 5 views
1

이 코드는 왼쪽, 오른쪽, 아래 또는 위로 움직이는 동안 이미지가 깜박입니다.libgdx 데스크탑 응용 프로그램에서 객체 이미지 움직임이 깜박임

public class MoveSpriteExample extends GdxTest implements InputProcessor { 
    Texture texture; 
    SpriteBatch batch; 
    OrthographicCamera camera; 
    Vector3 spritePosition = new Vector3(); 
    Sprite sprite; 

    public void create() { 

     float w = Gdx.graphics.getWidth(); 
     float h = Gdx.graphics.getHeight(); 
     batch = new SpriteBatch(); 
     camera = new OrthographicCamera(); 
     camera.setToOrtho(false, w, h); 

     texture = new Texture(Gdx.files.internal("data/TestImg.png")); 

     texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 
     sprite = new Sprite(texture); 

     sprite.setSize(32, 32); 
     spritePosition.y=100; 

     sprite.setPosition(spritePosition.x,spritePosition.x); 

    } 

    public void render() { 
     // set the clear color and clear the screen. 
     Gdx.gl.glClearColor(1,1, 1, 1); 
     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    //  camera.apply(Gdx.gl10); 

     sprite.setPosition(spritePosition.x,spritePosition.y); 


     batch.begin(); 
     sprite.draw(batch); 
     batch.end(); 


     if (Gdx.input.isKeyPressed(Keys.D)==true) 
     { 
      spritePosition.x += 2; 
     }else if (Gdx.input.isKeyPressed(Keys.A)==true) 
     { 
      spritePosition.x -= 2; 
     } 
     else if (Gdx.input.isKeyPressed(Keys.Z)==true) 
     { 
      spritePosition.y -= 2; 
     } 
     else if (Gdx.input.isKeyPressed(Keys.W)==true) 
     { 
      spritePosition.y += 2; 
     } 

     // camera.unproject(spritePosition.set(Gdx.input.getX(), Gdx.input.getY(), 0)); 
     // if a finger is down, set the sprite's x/y coordinate. 

    } 
} 

답변

1

예 프레임마다 2 픽셀 씩 움직이면 깜박입니다. 1 초에 120px와 비슷합니다. 델타 시간에 따라 이동해야합니다. (그리고 그 시간에 그 항상 2px 그 smothy하지 않습니다)

예를 들어, 50px 그것을 당신이 그것을 좋아하는 눌러 진 방향으로 매초마다 움직이고 싶습니다.

spritePosition.y += 50f*Gdx.graphics.getDeltaTime(); 

프레임 속도가 아닌 deltatime에 따라 모든 사항을 업데이트하십시오. deltatime은 마지막 프레임과이 프레임 사이의 시간입니다.

일반적으로 화면을 사용하여 이와 같은 설정을 만듭니다. 화면이 설정되면 델타 시간과 함께 렌더 메소드가 호출됩니다. (인터페이스의 메서드)

steigert tutorial을 살펴 봐야합니다. libgdx로 시작하면 정말 좋을 것입니다. 행운을 빈다.

+1

고맙습니다. –

관련 문제