基本上我用pygame制作游戏,屏幕周围会有矩形移动。玩家1和玩家2。如果玩家1的任何一个单位在玩家2的单位的x距离内,则开火。如果我与中心保持距离,那么它就不会准确,因为这些矩形中的一些将在一侧长得多,并且将在被射击的范围内,但中心不会成功。我一直在寻找,但我们无法找到解决这个问题的办法。
编辑:删除了圈子。我也会有圈子,但我会像矩形一样对待它们并使用它们.rect。它们很小,2像素的不准确性并不重要。
答案 0 :(得分:0)
这是我现在能想到的最好的: 它将矩形的角与圆的中心进行比较。如果这还不够,你可以沿着矩形边添加中心点。
不是一个完美的解决方案,但根据您所写的游戏,它应该足够了
def isInRange(rectangle, circle):
return (
(rectangle.topleft.x - circle.centerx)**2 + (rectangle.topleft.y - circle.centery)**2 <= (mindist + r_circle)**2 or #circle in upper left quadrant of rectangle
(rectangle.bottomleft.x - circle.centerx)**2 + (rectangle.bottomleft.y - circle.centery)**2 <= (mindist + r_circle)**2 or #circle in bottom left quadrant of rectangle
(rectangle.bottomright.x - circle.centerx)**2 + (rectangle.bottomright.y - circle.centery)**2 <= (mindist + r_circle)**2 or #circle in bottom right quadrant of rectangle
(rectangle.topright.x - circle.centerx)**2 + (rectangle.topright.y - circle.centery)**2 <= (mindist + r_circle)**2 #circle in top right quadrant of rectangle
)