0

我尝试使用 OpenGL ES 2.0 在 Android 上设计自己的游戏引擎。

到目前为止,我有一个球体沿 x 轴移动,方程 x(t) = v*(t-t0) + x0。假设球体的半径为r。我使用SystemClock.uptimeMillis()函数来计算时间t

有两堵墙,x=1 和 x=-1。当球体接触到这两个壁之一时(即当球体和一个壁之间的距离小于 r 时),它就会反弹回来。

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

因此,仅在渲染帧时进行计算。因此,“碰撞检查”的频率取决于应用程序的帧速率。唉,有时下一帧渲染时间太长,翻译需要墙后的球体,就像某种量子粒子:)。

是否可以对我的应用程序的帧速率进行某种控制?你知道避免我的球体轨迹出现这种不连续性的方法吗?

非常感谢您的举办!

4

1 回答 1

0

"Tunneling" through walls is a consistent problem in video games. Much time is spent combating such behavior. When checking your collisions, you really need to know the previous position and the new position. Then you check to see if there is a wall in between those two positions, and if so, you re-orient your object as though it had bounced off of the wall.

A collision check that looks for distance between sphere and wall is not enough.

于 2013-07-06T19:26:07.197 回答