Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于颜色跟踪精灵上的点_Python_Pygame - Fatal编程技术网

Python 如何基于颜色跟踪精灵上的点

Python 如何基于颜色跟踪精灵上的点,python,pygame,Python,Pygame,我有一个小精灵来代表一辆汽车,周围有六个点来感知空间。如何根据点的颜色跟踪点,以便测试与矩形的碰撞 左两个点为纯品红,前两个点为纯红色,右两个点为纯绿色*(255,0,255);(255, 0, 0) ; (0,255,0) 我意识到我没有直接回答你的问题 进行此类碰撞的最佳方法是首先检查精灵边界矩形上的碰撞。这是一个有效的检查,因为如果基础矩形没有碰撞,就没有理由检查六个控制点 Pygame已经通过colliderect()成员函数支持这种检测 一旦代码确定发生了基准面碰撞,然后对六个控制点中

我有一个小精灵来代表一辆汽车,周围有六个点来感知空间。如何根据点的颜色跟踪点,以便测试与矩形的碰撞

左两个点为纯品红,前两个点为纯红色,右两个点为纯绿色*(255,0,255);(255, 0, 0) ; (0,255,0)


我意识到我没有直接回答你的问题

进行此类碰撞的最佳方法是首先检查精灵边界矩形上的碰撞。这是一个有效的检查,因为如果基础矩形没有碰撞,就没有理由检查六个控制点

Pygame已经通过
colliderect()
成员函数支持这种检测

一旦代码确定发生了基准面碰撞,然后对六个控制点中的每一个使用该函数(显然要考虑精灵的当前位置)


您可能还想研究使用更精确的像素级碰撞。

根据点的颜色跟踪点,以便我可以测试与矩形的碰撞?
为什么需要颜色?当然有些坐标x、y和大小足以进行碰撞?我想使用边界框可以更好地找到碰撞
    im = Image.open('CarSprite.png')
    im = im.convert('RGBA')

    data = np.array(im)
    red, green, blue, alpha = data.T

    black_areas = (red == 0) & (blue == 0) & (green == 0)
    data[..., :-1][black_areas.T] = (random.randint(50,250), random.randint(50,250), random.randint(50,250)) # Converts black to random colors

    im2 = Image.fromarray(data)
    mode = im2.mode
    size = im2.size
    data = im2.tobytes()