2012-02-28 81 views
-1

我想移動的背景與鮑勃(Android的遊戲角色)移動爲我做一個動態對象名稱背景如何管理後臺渲染?

public static int BACKGROUND_MOVE=0; 
    public static int BACKGROUND_FALL=1; 
public static final float BACKGROUND_MOVE_VELOCITY =3.5f; 
public static float BOB_WIDTH =10.0f; 
public static float BOB_HEIGHT =15.0f; 
public static long startTime = 0; 
public int state; 
public float stateTime; 
public BackGround(float x, float y) 
{ 
    super(x, y, BOB_WIDTH, BOB_HEIGHT); 
    state = BACKGROUND_MOVE; 
    stateTime = 0; 
    accel.set(0,-2); 
    velocity.y=3.5f;//55 

} 

public void update (float deltaTime) 
{ 
    //velocity.add(World.gravity.x, World.gravity.y * deltaTime); 
    velocity.add(accel.x * deltaTime,accel.y*deltaTime); 
      position.add(velocity.x * deltaTime, velocity.y * deltaTime); 

    if (velocity.y > 0 && state==Bob.BOB_STATE_HIT)//BOB_STATE_HIT is bob running //condition 
     { 
      if (state != BACKGROUND_MOVE) 
      { 
       state = BACKGROUND_MOVE; 
       stateTime = 0; 
      } 
     } 

    if (velocity.y > 0 && state != Bob.BOB_STATE_HIT) 
     { 
     if (state != BACKGROUND_FALL) 
     { 
      state = BACKGROUND_FALL; 
      stateTime = 0; 
     } 
     } 
    //  if (velocity.y < 0 && state == BOB_STATE_HIT) 
//  { 
    //   if (state != BOB_STATE_JUMP) { 
//    state = BOB_STATE_JUMP; 
//    stateTime = 0; 
//   } 
    //} 

    //if (position.y < 0) position.x = World.WORLD_WIDTH; 
    //if (position.x > World.WORLD_WIDTH) position.x = 0; 
    stateTime += deltaTime; 
    } 
public void move() 
    { 
    if(state==BACKGROUND_MOVE) 
    { 
    startTime=System.nanoTime()/1000000000; 
    //  state = BACKGROUND_MOVE; 
    velocity.y = BACKGROUND_MOVE_VELOCITY; 
    stateTime = 0; 
    } 
} 

類似鮑勃我amke在世界一流的對象,使一個ArrayList添加Backgroung成數組列表在繪圖的時間從ArrayList中獲得並繪製...但沒有任何效果顯示簡單的屏幕上顯示,並越過rangeand紅屏顯示......請人幫助..

 /*---------------background cam------*/ 

     this.bcam = new OrthographicCamera(FRUSTUM_WIDTH,FRUSTUM_HEIGHT); 
     this.bcam.position.set(FRUSTUM_WIDTH,FRUSTUM_HEIGHT, 0); 
     this.batch = batch; 

      public void renderBackground() 
      { 
    GLCommon gl = Gdx.gl; 
    gl.glClearColor(1, 0, 0, 1); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    bcam.update(); 
    batch.setProjectionMatrix(bcam.combined); 
    batch.disableBlending(); 
    batch.begin(); 
    if (world.objbackground.state ==BackGround.BACKGROUND_MOVE) 
    batch.draw(Assets.mainbackgroundRegion, cam.position.x - FRUSTUM_WIDTH/2,  cam.position.y - FRUSTUM_HEIGHT/2, FRUSTUM_WIDTH, FRUSTUM_HEIGHT); 
     //  else 
     //  { 
     //  batch.draw(Assets.touchbackgroundRegion, cam.position.x - 
     //  FRUSTUM_WIDTH/2, cam.position.y - FRUSTUM_HEIGHT/2, 
     //  FRUSTUM_WIDTH, FRUSTUM_HEIGHT); 
     //  if (elapsed == 5) 
     //    changebackground = 0; 
     //  } 
     batch.end(); 
    } 

回答

1

要麼你要移動的背景與鮑勃(1)或你想有一個固定的背景(2):

(1):使用batch.draw(......, background.position.x, background.position.y)將背景的位置設置爲Bob的(可能帶有偏移量,您可以在世界的更新函數中執行此操作)。 (2):拋棄BackGround對象中複雜的更新方法,並像現在一樣使用render方法。

但說實話,你的意圖和解釋不是很清楚,試着改進一下!