如何检测对象是否与特定标签重叠?

How to detect if an object is overlapping with specific tag?

在 Python 3.6.0 中使用 Tkinter,是否有 'good' 方法来检测特定对象(在本例中是我的玩家精灵)是否与具有特定标签的任何其他对象重叠?

我想做类似的事情:

if canvas.find_overlapping( *canvas.coords(player) ) == (player, "item_tag"):
    return True

其中 item_tag 是应用于 canvas 上 100 多个对象的标签。

我可以使用 canvas.find_withtag("item_tag") 到 return 我希望玩家与之交互的所有对象的对象 ID,但我无法在 find_overlapping 中使用它,例如获取每个对象 ID 并让 find_overlapping 检测它是否重叠。

谢谢!

考虑到两者都是列表,您所要做的就是获取一个的每个元素并检查它是否在另一个中:

 tagged_objects = canvas.find_withtag("item_tag")
 overlapping_objects = canvas.find_overlapping(*canvas.coords(player))

 for item in overlapping_objects:
     if (item in tagged_objects):
         return True

您可以反过来执行此操作并查看 tagged_objects 的每个元素是否在 overlapping_objects 中,但考虑到您说有 100 多个标记的对象,这可能会更慢。