2012-07-19 44 views

回答

6

您可以使用Mask和使用它的方法get_at

如果(x,y)位置位,則返回非零值。

創建一個面具是通過調用pygame.mask.from_surface

返回從給定表面的面具很簡單。
使表面的透明部分未設置,並設置不透明部分。


所以,給出了一些矢量數學以下輔助方法:

def sub(u, v): 
    return [ u[i]-v[i] for i in range(len(u)) ] 

使用下面的代碼來檢查是否一個給定的點是一個掩模/表面內:

# create mask from surface 
mask = pygame.mask.from_surface(building.surface) 

# translate the position of the missile, 
# since the top left coordinate of the mask is always (0, 0) 
rel_point = sub(missile.position, building.position) 
try: 
    if mask.get_at(rel_point): 
     # point in mask 
     do_something() 
except IndexError: 
    pass