2012-11-04 61 views
1

好吧,我想先說我知道我實際上沒有移動攝像頭,但解釋起來更容易。在openGL中移動攝像頭的問題

我的問題是,我正在試圖將我的角色的相機移動到自頂向下的2d RPG中,而我找不到正確的方法來做到這一點。我知道glTranslate(),但是我只能使用速度而不是x和y座標。我不確定如何移動相機以記住三角洲。我甚至不知道glTranslate()甚至是我應該使用的方法。

如果我沒有任何意義(這很可能),這裏是我的一些代碼。

我while循環測試:

while(!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)&&!Display.isCloseRequested()) 
    { 
     glClear(GL11.GL_COLOR_BUFFER_BIT); 

     delta=getDelta(); 
     update(delta); 
     glTranslatef(speedx, speedy, 0); 

     level1.checkCurrent(x, y); 
     level1.draw(); 
     Display.update(); 
     Display.sync(60); 
    } 

這裏是我設定的速度:

if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) 
    { 
     y+=0.5*delta; 
     screenY+=0.5*delta; 
     speedy=(int) (-0.5*delta); 
     direction=2; 
    } 
    else if(Keyboard.isKeyDown(Keyboard.KEY_UP)) 
    { 
     y-=0.5*delta; 
     screenY-=0.5*delta; 
     speedy=(int) (0.5*delta); 
     direction=8; 
    } 
    else 
     speedy=0; 

回答

1

現在你治療的OpenGL就好像它是一個場景圖。然而OpenGL只是爲了在屏幕上畫東西。不管你做什麼,你都應該總是以某種方式思考你的問題,就好像其餘的基礎設施都不在那裏一樣。

你想加速一個對象?那麼,你需要增加一些速度變量隨着時間的推移,速度變量乘以時間增加了位置。本質上牛頓運動定律:

a = dv/dt => v = a*t + v_0 
v = dr/dt => r = v*t + r_0 = a*t² + v_0*t + r_0 

這是你評估你的每個物體。然後,當繪製動畫時,可以使用狀態來相應地放置對象幾何。