首页 > 解决方案 > 为什么在下面的代码中距离必须小于 27

问题描述

我正在观看关于 YT 的 pygame 教程以及该人所做的碰撞:

def isCollision(x1,y1,x2,y2):
    distance =  root of (x1 - x2)^2 + (y1 - y2)^2
#i know this is not how you do it but using the math module takes too long 
    if distance > 27:
        return True
    else:
        return False

我想问他是如何决定距离需要小于27的。我的意思是为什么27?如果代码不够,视频来自 freeCodeCamp.org 及其称为 Pygame 初学者的教程。代码在描述中。

标签: python-3.xpygamecollision-detection

解决方案


游戏中的角色不是单点对象,它们在代表对象的点周围占据一些空间。考虑这些图像中的圆形对象:

在此处输入图像描述

两个物体的中心之间的距离为> 0<= radius,但在第一种情况下存在碰撞。如果我们在检测碰撞时不考虑半径,程序将不会检查碰撞检测,而是会检查对象是否重合。

我不知道您正在遵循的教程,但除其他可能性外,两个对象的半径都有可能是 14。因此,添加两个对象的半径会得到 28,并且只要两个对象之间的距离变为< 28<= 27,可以看作是碰撞。这可能是选择的原因27


推荐阅读