обнаружение столкновения пикселей для вспышки - PullRequest
1 голос
/ 11 января 2010

Мне сказали, что обнаружение пикселей дорого для обычных игр для Windows. Это то же самое для вспышки ?? Или обнаружение пикселей будет легче по сравнению с другими обнаружениями, которые может предложить вспышка. Flash имеет метод getPixel32, который облегчает обнаружение пикселей. Если я ругаю свою игру, было бы разумно использовать getPixel32 для обнаружения столкновений. Или я должен просто проверить на конкретные плитки?

Ограничен ли getPixel32 экранным объектом, в котором он находится? Другими словами, я могу обнаружить любой пиксель независимо от того, на каком слое он находится в списке отображения.

И, наконец, я, наверное, могу понять это самостоятельно, но сначала хочу попросить сэкономить мне немного времени. Но есть ли у кого-нибудь код или хорошие источники о том, как это сделать, если это разумно.

Ответы [ 6 ]

3 голосов
/ 12 января 2010

CDK от Corey oniel довольно приличный http://www.coreyoneil.com/portfolio/index.php?project=5. на своем сайте вы можете увидеть из примеров, что он хорошо обрабатывает большое количество объектов. Я использовал его для моей системы столкновений, и он довольно хорошо справлялся с обнаружением.
я тоже придерживаюсь общей идеи использовать пиксельное обнаружение столкновений в играх, чтобы сделать их более реалистичными. еще, как и большинство флеш-игр, они выглядят как очень плохо вытянутые фальшивые удары.

3 голосов
/ 11 января 2010

Обнаружение «идеального пикселя» обходится дорого. Независимо от окружающей среды.

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

Если вы можете получить "достаточно хорошее" обнаружение столкновений, не прибегая к подсчету пикселей, сделайте это вместо этого.

2 голосов
/ 14 января 2010
  1. Алан, я бы не согласился, потому что идеальное пиксельное обнаружение столкновений не дорого в зависимости от используемого вами метода.
  2. Предоставление peters традиционного "идеального пикселя", реализованного с использованием блитинга, было бы намного лучше, чем идеального пикселя ", рассчитанного с помощью вогнутых алгоритмов коллизий Вы можете следить за обсуждением здесь http://www.actionscript.org/forums/showthread.php3?p=959885#post959885
  3. Вообще говоря, когда речь идет о точном обнаружении столкновений с точностью до пикселя, в зависимости от того, где вам это нужно, это двухэтапный процесс, основанный на математической обработке
  1. Обнаружение идеального пикселя столкновения - сделано на основе бликов, это не дорого для хорошего количества предметов. Вы можете см. Здесь

  2. Обработка реакции после Pixel Perfect Collision - например, вычисление углов,> близость и тому подобное. Обработка реакции на основе близости . b Обработка реакции на взаимодействие шара с мячом .

1 голос
/ 12 января 2010

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

При реализации собственного флеш-рендерера я так и поступил с обнаружением коллизий, поскольку он казался наиболее естественным из-за данных, которые у меня уже были. Было бы бессмысленно писать много специализированного кода, чтобы сделать что-то похожее (аля традиционные методы идеального пикселя) с менее точными результатами (вы не хотите, чтобы он действовал иначе, просто потому, что вы установили более низкое качество изображения или увеличено / уменьшено).

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

1 голос
/ 12 января 2010

Чтобы опираться на идеи, уже перечисленные здесь, вы действительно можете использовать круг в качестве ограничивающего объекта, поскольку обнаружение столкновений с ними происходит быстро.

Тогда, если обнаружен удар, вы можете выполнить определение для каждого пикселя. Таким образом, вы не всегда должны вызывать дорогостоящее распознавание на пиксель, но все равно будете обеспечивать точность на пиксель (если ваша игра этого требует).

1 голос
/ 11 января 2010

Почти в любой среде я бы предпочел использовать примитивы, такие как прямоугольники и круги, вместо пикселей для обнаружения столкновений. Обычно из таких примитивов вы можете получить разумное представление ваших спрайтов и получить реальное повышение производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...