2013-07-06 55 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