如何检测对象是否与特定标签重叠?
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 多个标记的对象,这可能会更慢。
在 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 多个标记的对象,这可能会更慢。