2
\$\begingroup\$

I am trying to make something with java libgdx (2D). One thing that I can't figure it out is how to check mouse intersection with (fore example) isometric textures that are not rectangle shaped images. I found something about pickingColorPicking algorithm in libgdx, but I can't find any docs about how to use it. Any ideas?

\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

You can use the pixmap.getPixel(x,y) method to find the color value at a certain pixel. To do collision checking, you could check the alpha value of that pixel. If it isn't zero, there is a collision.

Example:

public static int pixelAtPoint(float x, float y, Pixmap pix) {
    int pixel = pix.getPixel(x,y);
    return pixel;
}
\$\endgroup\$
4
  • \$\begingroup\$ Thanks. I will definitely try this one. At least now it makes sense, I used similar technique in XNA framework. \$\endgroup\$
    – Tom
    Commented May 29, 2013 at 5:09
  • \$\begingroup\$ Can you explain me one more thing. If I am drawing few textures (in different positions) at the same moment and I want to check if mouse point intersects one of them - how should I check that? Because with pixelAtPoint I'm only checking position in specific texture point, not in the point of the screen, right? Sorry it's hard to understand what I'm asking. \$\endgroup\$
    – Tom
    Commented May 29, 2013 at 5:15
  • \$\begingroup\$ if the texture is being drawn at point (100,100) on the screen, you can do something like pix.getPixel(x - 100,y-100); \$\endgroup\$ Commented May 29, 2013 at 5:29
  • \$\begingroup\$ You're amazing, man! It works. I just needed to add this: if ((pixel & 0x000000ff) != 0) { // pixels collided } so that game would compare transparent .png and now it works fine. Cool! Many, many thanks to You. :) \$\endgroup\$
    – Tom
    Commented May 29, 2013 at 19:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .