Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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,我试着制作一个碰撞遮罩来检测两个精灵是否发生碰撞,但它根本不起作用,我遇到了一个瞬间的碰撞,你能帮我吗 我的代码是: Player.rect = Player.image.get_rect() oc1.rect = oc1.image.get_rect() mask_1 = pg.mask.from_surface(Player) mask_2 = pg.mask.from_surface(oc1) Cm = pg.

我试着制作一个碰撞遮罩来检测两个精灵是否发生碰撞,但它根本不起作用,我遇到了一个瞬间的碰撞,你能帮我吗

我的代码是:

        Player.rect = Player.image.get_rect()
        oc1.rect = oc1.image.get_rect()
        mask_1 = pg.mask.from_surface(Player)
        mask_2 = pg.mask.from_surface(oc1)
        Cm = pg.sprite.collide_mask(mask_1, mask_2)
        if Cm != None :
            print('life - 1')
见以下文件:

使用遮罩检测两个精灵之间的碰撞

collide_mask(SpriteLeft, SpriteRight) -> point
通过测试两个精灵的位掩码是否重叠来测试它们之间的碰撞。如果精灵具有用作遮罩的“遮罩”属性,则会从精灵图像创建遮罩。旨在作为冲突回调函数传递给*collide函数。精灵必须具有“rect”和可选的“mask”属性

.collide_mask()
的参数必须是2个对象,而不是2个遮罩对象:

在以下情况下,假定
Player
oc1
是对象:

Player.rect=Player.image.get_rect()
oc1.rect=oc1.image.get_rect()
Cm=pg.sprite.collide_面具(玩家,oc1)
如果Cm!=无:
打印('life-1')

最简单的例子:

另见