Обнаружение столкновений не имеет значения для новичков и не может быть полностью объяснено в столбце Stackoverflow; если вы все еще боретесь с массивами, попробуйте сделать простые игры, где обнаружение столкновения определяется путем вычисления расстояния между объектами, такими как кругов.
Есть много способов справиться с обнаружением столкновений, но вы должны быть более конкретными:
каких плиток на основе игры вы планируете развивать?
Я настоятельно рекомендую вам прочитать this article от Katy Coe, в котором приводится краткое изложение нескольких реализаций. Следующие способы объясняются в вышеупомянутом блоге.
Простейший и наиболее интуитивно понятный метод: Pixel Color Approach, где игроки могут перемещаться по плиткам с определенным значением цвета, но его можно использовать только с ограниченной цветовой палитрой. Маска Подход по существу такой же, как и PCA, но он скрывает черно-белые слои за пользовательской графикой; последний является дорогостоящим и не рекомендуется в целом.
Основанный на сетке подход - это, вероятно, то, что вы ищете. Каждый элемент карты соответствует черепице сетки (описываемой 2D-массивом). Игрок движется в дискретном пространстве, хотя анимация может подделывать движения жидкости.
Метод пиксельной плитки описывает столкновения с помощью круговых символов с n контрольными точками; этот подход позволяет разработчику использовать неквадратные символы в черепичном мире. Метод Bounding Box - это более простая реализация PTM, где игрок обернут в прямоугольник.Программа проверяет, пересекается ли любой из четырех углов прямоугольника с любой стеной.
Discrete Collision Detection или его улучшенная версия, Спекулятивные Контакты, используются в более сложных играх, и вы, конечно, не нужны те, в настоящее время.
Не пытайтесь изучить все сразу, начните с простейшей реализации, вы можете думать о. В противном случае вы скоро разочаруетесь и не оцените про/минусы каждой техники.
Я недавно нашел this great tutorial о играх на основе плитки с Macromedia Flash, но вы можете легко применить эти методы, используя свой язык по выбору. ПРОЧИТАЙТЕ ЭТО! Если вы хотите найти альтернативу статьям Кэти, Rodrigo Monteiro comes in help.
Можете ли вы подробно остановиться на этом вопросе? Что удерживает ArrayList на панели? Что такое плитка? Не могли бы вы добавить код в свою проблему? – tmaxxcar
Привет, добро пожаловать в StackOverflow. Что вы пробовали, и что пошло не так? – CPerkins
вы хотите узнать, сталкивается ли игрок (в местоположении x, y) в плитку (размером 32 * 32). Первое, что вам нужно знать, - это место расположения плитки, которое представлено X и Y в вашем классе плитки. Затем вы можете добавить 32 к значениям X и Y, чтобы получить нижний правый угол вашего изображения. – tmaxxcar