2013-07-06 67 views
0

我嘗試使用OpenGL ES 2.0在Android上設計自己的遊戲引擎。到目前爲止,我有一個球體沿x軸移動,方程爲x(t)= v *(t-t0)+ x0。假設球體的半徑是r。我使用函數SystemClock.uptimeMillis()來計算時間tAndroid OpenGL ES 2.0:翻譯,碰撞和控制幀速率

有兩個牆,在x = 1和x = -1。當球體接觸到這兩個牆壁之一時(即當球體與一個牆壁之間的距離小於r時),它會反彈回來。

我的計算是在我的渲染器的onDrawFrame()方法中完成的。

因此,計算僅在渲染幀時完成。因此,「碰撞檢查」的頻率取決於應用程序的幀率。唉,有時候下一幀需要很長的時間才能渲染,而且翻譯會將球體置於牆後面,就像某種量子粒子:)。

是否可以對我的應用程序的幀率進行某種控制?你知道一種避免我的球體軌跡中出現這種不連續性的方法嗎?

非常感謝您的召開!

回答

0

通過牆壁的「隧道」是視頻遊戲中一貫的問題。花了很多時間來對抗這種行爲。在檢查你的碰撞時,你真的需要知道以前的位置和新的位置。然後你檢查這兩個位置之間是否有隔牆,如果是這樣,你重新定位你的物體,就好像它已經從牆壁上彈起一樣。

查找球體和牆壁之間距離的碰撞檢查是不夠的。

+0

這正是我所做的。但問題在於牆壁是旋轉的,有時由於旋轉,舊的位置離開牆壁。 – WillGFR