Итак, я делаю игру Frogger, но столкнулся с проблемой. Для обнаружения столкновений я использую следующее, чтобы проверить, перекрывает ли один объект холста Tkinter другой:
canvas.find_overlapping(*canvas.bbox(imageObj))
Однако я также сделал фон объектом холста:
background = self.canvas.create_image(0, 0, image = self.imageData["Background"], anchor = "nw")
Итак, программа обнаруживает столкновение между игроком и объектом 24/7. Есть ли способ обойти это? Я искал SO и попытался поместить фон в этикетку, но когда я упаковал холст поверх него, фон исчез (вероятно, потому, что холст его закрыл).
Я не могу найти способ сделать холст прозрачным, не сделав прозрачными и объекты на нем. Я также не хочу вычислять поля x и y каждого объекта, поскольку это просто громоздко и ненадежно.
Если бы кто-то мог предложить другой способ, это было бы здорово.
Метод find_overlapping
возвращает список элементов. Просто пролистайте список и игнорируйте фоновый элемент.
@ Brian-Oakley. Да, он возвращает кортеж, (1, 2)
. Вы можете объяснить, как это работает? Я впервые использую этот метод.
это XY проблема