[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [pygame] Re: Hexagonal collision detection?
Hi,
I allways use the alpha value of an button image to accomplish this.
# img is the image of the hex button with an transparent background.
# rect is the img rectangle positioned at the spot where the button is drawn.
# pos is the position to check for.
if rect.collidepoint(pos): # First of all, check if we are
inside the button image
x = pos[0].rect.w # Translate the location to a
local location within the image.
y = pos[1].rect.h
c = tuple(img.get_at((x,y)) # Get the color for that pixel
(this works for both pygame 1.9 and older)
if c[3] > 0: # Did we click on a none
transparent pixel, Then we have clicked on the image.
return True
return False
My five cents
/John Eriksson (wmjoers)
2009/9/15 René Dudfield <renesd@xxxxxxxxx>:
> On Tue, Sep 15, 2009 at 12:05 PM, rygoody <rygoody@xxxxxxxxx> wrote:
>> Where do I get at this polygonal collision detection? I cannot find it
>> in the pygame docs.
>
> It doesn't come with pygame, you'd need to search for it. Here's a
> page here about it:
> http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/
>
>
> The color method is probably best - that way you can do collision with
> any shape at all.
>
>
>>
>> On Sep 15, 3:30 am, René Dudfield <ren...@xxxxxxxxx> wrote:
>>> You could use polygon collision detection.
>>>
>>> Also you could draw your hex each with a different color, and use that
>>> as a collision surface. For example, you drew your 1st hex as color
>>> (0,0,1,255) then your 2nd as (0,0,2,255) etc. That would probably be
>>> fastest, as it's just a lookup table - pretty easy too.
>>>
>>> cheers,
>>>
>>>
>