我正试图在Zelle的python图形模块中构建一个2D地图。 我使用Polygon类对象创建了地图边界。 如果我想检查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
来获取circ.getCenter()
位置,但我不知道检查这两个对象是否交叉的最佳方法是什么。也许是这样的
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
答案 0 :(得分:1)
我在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 :
但是,这会感觉圆圈的边缘是否接触到一个矩形,所以为了让它感知圆圈是否接触到地图,你需要将所有的rect_x替换为0,将所有的rect_y替换为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