2014-12-03 97 views
0

我想在使用OpenGL的Android上創建簡單的遊戲。Opengl ES 2.0移動時的攝像機混球播放器

我在2個主題上運行遊戲。一個用於渲染一個用於移動物體。問題是,當我嘗試用照相機跟隨玩家時,玩家開始猛拉。 (請參閱youtube鏈接,進行屏幕錄製)

我嘗試以兩種不同的方式移動相機。首先,我嘗試將其移到播放器的頂部(相機x,y與播放器x,y相同)。其次,我試圖將它作爲彈性/彈簧來跟隨玩家。在兩種情況下均發生衝突。

http://youtu.be/5DXuYuaabvM(相機上播放的頂部)

http://youtu.be/4M-udbu2Vfc(相機彈性彈簧)

我試圖打印播放器和攝像機x位置移動時,它看起來並不像他們勻速前進。更奇怪的是,綠色的魚並不是混蛋,而是以與玩家大致相同的速度移動。

這是快速勾畫螺紋設計。

Thread design

(播放器是移動速度/方向由加速度計控制器)。

EDIT(mikkokoo的回答後): 研究的問題更多一些,我發現了這個 「phenomenom」 後,被稱爲相機口吃。 問題是因爲Mikkokoo的說精靈在移動,而渲染器仍然在吸引他,一些在fps(甚至小的)下降也對這個事件做出貢獻。

一個簡單的解決方案是在渲染器線程上完成所有工作。 更好的解決方案是以某種方式同步渲染器和「工作」線程。首先,修復你的fps(渲染器和工作線程)是很好的。我們離開了渲染器,因爲它是通過vsync修復的,另一方面我們修復了120fps的工作線程。 因爲在我們的例子中只有玩家(果凍)在口吃,所以我們改變了他在渲染線程上完成的步驟。這基本上是固定的口吃,渲染器線程的額外工作量是最小的,因爲只需要完成3個額外的矩陣操作(旋轉,平移,縮放)。

如果你從一開始就用引擎開始,我可能會看看如何爲每個精靈實現2「holder」modelViewMatrix。然後,當你移動精靈時,你總是將它移動到holderMatrix上,並從另一個上繪製。繪圖完成後,您可以更改支架和「真實」矩陣。這將基本上消除繪圖時改變矩陣的問題。

回答

0

對我來說,它看起來像水母在你的getPlayerlocationdrawSprite之間移動的水母。

嘗試使用相機座標爲相機矩陣和繪製水母(從getPlayerlocation得到的那些)。