2013-07-06 6 views
0

Я пытаюсь создать собственный движок игры на Android с OpenGL ES 2.0.Android OpenGL ES 2.0: перевод, столкновение и управление частотой кадров

До сих пор у меня есть шар, движущийся вдоль оси x с уравнением x (t) = v * (t-t0) + x0. Скажем, радиус сферы равен r. Я использую fonction SystemClock.uptimeMillis(), чтобы вычислить время t.

Есть две стены, при x = 1 и x = -1. Когда сфера касается одной из этих двух стен (т. Е. Когда расстояние между сферой и одной стеной меньше r), то она отскакивает назад.

Мои вычисления выполнены в методе onDrawFrame() моего средства визуализации.

Следовательно, вычисления выполняются только при визуализации кадра. Таким образом, частота «проверки столкновения» зависит от частоты кадров приложения. Увы, иногда следующий фрейм занимает слишком много времени, чтобы быть рендерированным, и перевод берет сферу за стеной, как какая-то квантовая частица :).

Возможно ли иметь некоторый контроль над частотой кадров моего приложения? Знаете ли вы способ избежать таких разрывов в траектории моей сферы?

Большое спасибо за ваше участие!

ответ

0

«Туннелирование» через стены является постоянной проблемой в видеоиграх. Много времени тратится на борьбу с таким поведением. При проверке ваших столкновений вам действительно нужно знать предыдущую позицию и новую позицию. Затем вы проверяете, есть ли стена между этими двумя позициями, и если да, то вы переориентируете свой объект так, как будто он отскочил от стены.

Проверка столкновения, которая ищет расстояние между сферой и стенкой, недостаточно.

+0

Это именно то, что я делаю. Но проблема в том, что стены вращаются, а иногда старое положение у стены из-за вращения. – WillGFR

 Смежные вопросы

  • Нет связанных вопросов^_^