анимация с обнаружением столкновений?

У меня возникли проблемы с поиском лучшего способа настроить анимацию с обнаружением столкновений. У меня есть полнофункциональная версия Falldown (популярная игра-калькулятор), использующая обработчик и onDraw() для рисования прямоугольников для строк и растрового шара. Однако эта анимация пропускает (выглядит запаздывающей), поэтому я пытаюсь переключить анимацию на анимацию движения.

Мой вопрос концептуальный: как обнаружить столкновения в середине анимации? Я рассматриваю боковую анимацию как один из двух путей: а) я анимирую очень маленькими шагами. Тем не менее, я полагаю, что это будет выглядеть так же плохо, как и текущая настройка анимации. б) Я установил анимацию полностью слева или справа от экрана, но каждый шаг в анимации проверяет, чтобы мяч не проходил через ряд.

Я сталкиваюсь с аналогичной проблемой с движением мяча вниз. Можно ли постоянно получать доступ/обновлять положение мяча (хранящегося как целое число), а затем обрезать анимацию, если он с чем-то сталкивается? Возможно ли, чтобы мяч двигался вниз тогда и только тогда, когда он не находится над частью ряда? Должен быть какой-то способ обнаружить столкновения внутри анимации, но я не знаю, как это сделать.

редактировать: если класс анимации не подходит для игр, как я должен анимировать свою игру? Как я уже сказал, моя система с обработчиком заставляет мяч прыгать, даже когда я устанавливаю задержку в 1 миллисекунду.


person Seth Nelson    schedule 15.12.2010    source источник
comment
класс Animation и анимация, определенная в android-manifest.xml, не подходят для использования в играх любого рода. Они просто перемещают вещи в графическом интерфейсе.   -  person Mark Storer    schedule 16.12.2010
comment
Вы можете посмотреть gamedev.stackexchange.com для получения более подробных ответов на вопросы по игре.   -  person Cheryl Simon    schedule 16.12.2010
comment
Марк прав... вам не следует использовать анимацию   -  person Snailer    schedule 16.12.2010
comment
Ссылки на примеры пожалуйста.   -  person ezaspi    schedule 28.10.2017


Ответы (1)


Один поток для методов рисования холста пользовательского интерфейса и один поток для игровой логики/всего, что не связано с пользовательским интерфейсом.

Один поток обновляет позиции объектов и т. д., а другой поток пользовательского интерфейса просто рисует их на экране.

В этой усадьбе поток вашей игровой логики непрерывен и на каждом пути обновляет позиции X, Y и обрабатывает такие вещи, как обнаружение столкновений и т. д. Поток рисования просто берет эти обновленные позиции X, Y и рисует растровые изображения на холсте.

Вы можете использовать SurfaceView в качестве холста для рисования коллекции растровых изображений/изображений/спрайтов. Вы можете просмотреть многочисленные примеры игр для Android, предоставленные Google, чтобы быстро и грязно взглянуть на то, как это достигается, но в целом это так, как я описал выше.

person methodin    schedule 15.12.2010
comment
Ссылку на упомянутые примеры, пожалуйста. - person ezaspi; 28.10.2017