Можно ли сделать идеальное столкновение пикселей в приложении на основе представления? Я искал примеры кодов, но не повезло ... Также можно использовать цветные растровые изображения для представления столкновения для определенного цвета?Пиксельное идеальное столкновение?
ответ
Вы можете. Похоже, это проще всего, если вы используете CGImage.
Вы можете создать 2D булевский массив для чтения значений пикселей для построения сетки попадания (в основном, матрицы 2x2), а затем сохранить это с классом игрового объекта.
Вам потребуется прямой доступ к пикселям для CGImage (the code is here) затем использовать для цикла считывания пиксельных данных в массив булевых значений:
BOOL pixelGrid[xPixels][yPixels];
for (int i = 0; i < xPixels; i++) {
for (int j = 0; j < yPixels; j++) {
pixelGrid[i][j] = pixelIsOpaque(i, j);
}
}
Метод pixelIsOpaque() выше, очевидно, Безразлично» t, просто замените все, что дает код примера, чтобы извлечь значение пикселя. Вы сохраняете, существует ли пиксель (в основном, проверьте, прозрачен ли пиксель) 0
Как только у вас есть эта сетка (сгенерируйте ее в начале вашей программы один раз и сохраните результирующий 2D-массив внутри игрового объекта), тогда вы нужен метод обнаружения столкновений.
BOOL detectCollision(BOOL *pixelGrid1, BOOL *pixelGrid2) {
BOOL result = NO;
for (int i = 0; i < xPixels; i++) {
for (int j = 0; j < yPixels; j++) {
if (pixelGrid1[i][j].opacity != 0 && pixelGrid2[i][j].opacity != 0]) {
result = YES; break;
}
}
}
return result;
}
Я просто написал этот код на лету, так что я не может быть 100% компилируется, но я надеюсь, что это дает вам идею. Вы можете легко изменить это, но вместо сравнения с непрозрачностью просто сравните с значением цвета пикселя снова, see here для получения необработанных данных цвета.
- 1. Pixel идеальное столкновение с Config.ALPHA_8
- 2. Pixel идеальное столкновение на анимации spritesheet, XNA
- 3. pygame: идеальное столкновение пикселей с линиями?
- 4. Flashpunk pixel идеальное столкновение на spritemap
- 5. Пиксельное идеальное масштабирование изображений при масштабировании холста с помощью fabric.js
- 6. за пиксельное столкновение с использованием getRGB из BufferedImage (Java2D Api)
- 7. Как найти идеальное столкновение пикселей в масштабированном спрайте в cocos2d?
- 8. ActionScript 3 пикселя идеальное столкновение. Как? (учебные цели)
- 9. Как применить идеальное столкновение пикселов к повернутым спрайтам?
- 10. C++ 3D идеальное обнаружение столкновений
- 11. Идеальное обслуживание
- 12. Пиксельное движение C++
- 13. openGL 2D-пиксельное вращение
- 14. Пиксельное поведение FillRectangle и DrawRectangle
- 15. Пиксельное движение и петли Python
- 16. Идеальное определение секретности
- 17. Идеальное число задач
- 18. C# идеальное число упражнение
- 19. Идеальное совпадение в дереве
- 20. MVC4 Идеальное кодирование контроллера
- 21. Идеальное хеширование для OpenCL
- 22. Идеальное сканирование OCR для Android
- 23. Библиотека Java, обеспечивающая идеальное хеширование?
- 24. Идеальное место для iAd Banner
- 25. Идеальное решение для проверки пароля
- 26. Пиксельное суммирование и вычитание в EmguCV
- 27. Сделать пиксельное освещение, как terraria и starbound
- 28. Крошечное нечеткое пиксельное обесцвечивание по меню
- 29. Сгенерировать пиксельное изображение в Python из массива
- 30. Как сделать пиксельное искусство для игры?
+1 для отличной информации. Меня действительно интересовали идеальные столкновения пикселей. Я попытаюсь посмотреть, будет ли это работать в эти выходные. Меня просто беспокоит производительность, но это еще одна проблема, которую можно решить в более позднее время. – Tovi7