我正在尝试在Zelle中构建Python图形模块中的2D地图。我使用多边形类对象创建了地图边界。如果我想检查cirlce对象是否正在触摸地图边界以检测碰撞,我该怎么办?
这是我的意思的一个示例:
poly = Polygon(Point(x1,y1), Point(x2,y2), Point(x3,y3)) .draw(win) # a triangle shape
circ = Circle (Point(x4,y4), radius) .draw(win) # drawn in the middle of the triangle map
我可以使用circ.getCenter()
获得circ
邮政编码,但我不知道该检查两个对象是否交叉是最好的方法。也许这样的东西
def collision(circ,poly,x,y):
if position of circle passes the position of the line of the poly at x,y:
detect collision
else:
pass
我在python中找到了一个碰撞检测程序,这里是。
if circle_x < rect_x + circle_width and circle_x + rect_width > rect_x and circle_y < rect_y + circle_height and circle_height + circle_y > rect_height :
但是,这会感觉到如果圆的边缘触摸矩形,因此,为了使其感知到圆圈是否触摸映射,则需要用0替换所有rect_x,并用0,用0,用0,用0,然后用屏幕宽度替换RECT_WIDTH,并用屏幕高度替换Rect_height,例如:
if circle_x < 0 + circle_width and circle_x + screen_width > 0 and circle_y < 0 + circle_height and circle_height + circle_y > screen_height :
现在,它会感觉到圆圈是否一般触摸地图,,以感觉到圆圈是否触摸屏幕的边缘if语句并做出其他说明,以便将您想要的内容放在其中:
if circle_x < 0 + circle_width and circle_x + screen_width > 0 and circle_y < 0 + circle_height and circle_height + circle_y > screen_height :
#put nothing here
else:
#put the code you need here