您好我正在开发简易空间入侵者克隆游戏,我需要弄清楚如何在我拍摄时检测子弹和外星人的碰撞。有什么建议 ?感谢
答案 0 :(得分:1)
使用Pygame代替Tkinter(最终取代Canvas) - 有检查碰撞的函数。
要检查碰撞,您必须获取两个元素的位置并检查它们之间的距离:
a 2 + b 2 = c 2
a = x1 - x2
,b = y1 - y2
,c = distance between objects A(x1,y1) and B(x2,y2)
如果距离小于某个值则会发生碰撞 - 距离不一定为零以进行碰撞。这样就可以检查对象周围的圆周碰撞。
但你可以检查物体周围方形区域的碰撞 - 它会更容易计算出来
对象A (x1,y1)
具有方形区域x1-10 ... x1+10, y1-10 ... y1+10
。您必须检查对象B (x2,y2)
是否在该方格中。
答案 1 :(得分:1)
您可以使用tkinter bbox进行坐标检查,这将返回4个元组,x1,y1,x2,y2,它们是对象的左上角和右下角。用一点点数学,检查它们是否在同一个空间内,防止它们进入或者遇到你想要的效果。
在数学期间可能也有帮助的事情
tkinter的find_overlapping。它返回一个入侵你的物品空间的元组。
tkinter的find_enclosed。它返回一个完全封闭的项目元组。
tkinter的find_closest。为您的物品提供了一个很酷的屏障。
以及更多精彩的文字,可以帮助您在这篇文章中发布的链接。不幸的是,我声名太低,无法提供多个链接...
在python 3中检查print((canvas.bbox(item))有助于手动检查元组或在标签等中打印它。