文章目录
pygame.sprite.Sprite - 可视化游戏对象的简单基类
- Sprite(*groups) -> Sprite
实例:https://github.com/search?q=pygame.sprite.Sprite&type=Code
- 派生类将重写 Sprite.update() 方法并指定 Sprite.image 和 Sprite.rect 属性。初始化程序可以接受要添加的任意数量的Group实例(多值参数)。
- 在对Sprite进行子类化时,请务必在将Sprite添加到Groups之前调用初始化程序。例如:
class Block(pygame.sprite.Sprite):
# 构造函数。传递块的颜色,宽和高
# and its x and y position
def __init__(self, color, width, height):
# 调用父类(Sprite)构造函数
pygame.sprite.Sprite.__init__(self)
# 创建块的图像,并用颜色填充。
# 这也可以是从磁盘加载的图像。
self.image = pygame.Surface([width, height])
self.image.fill(color)
# 获取具有图像尺寸的矩形对象
# 通过设置rect.x和rect.y的值来更新此对象的位置
self.rect = self.image.get_rect()
pygame.sprite.Sprite.update - 控制Sprite行为的方法
- update(*args) -> None
- 此方法的默认实现不执行任何操作;它只是一个方便的“挂钩”,你可以重写。 Group.update() 使用你提供的任何参数调用此方法。
- 如果不在Group类中使用同名的方法,则无需使用此方法。
实例:https://github.com/search?q=pygame.sprite.Sprite.update&type=Code
pygame.sprite.Sprite.add - 将Sprite添加到组
- add(*groups) -> None
- 可以将任意数量的Group实例作为参数传递。Sprite将被添加到它还不是其成员的组中。
实例:https://github.com/search?q=pygame.sprite.Sprite.add&type=Code
pygame.sprite.Sprite.remove - 从组中删除Sprite
- remove(*groups) -> None
- 可以将任意数量的Group实例作为参数传递。 Sprite将从其当前所属的组中删除。
实例:https://github.com/search?q=pygame.sprite.Sprite.remove&type=Code
pygame.sprite.Sprite.kill - 从所有组中删除Sprite
- kill() -> None
- Sprite对象将从包含它的所有组中被删除。这不会改变关于Sprite状态的任何信息。调用此方法后,可以继续使用Sprite,包括将其添加到Groups。
实例:https://github.com/search?q=pygame.sprite.Sprite.kill&type=Code
pygame.sprite.Sprite.alive - 是否有组包含Sprite
- alive() -> bool
- 当Sprite属于一个或多个组时返回True。
实例:https://github.com/search?q=pygame.sprite.Sprite.alive&type=Code
pygame.sprite.Sprite.groups - 包含此Sprite的组的列表
- groups() -> group_list
- 返回由 包含此Sprite的所有组 组成的列表。
实例:https://github.com/search?q=pygame.sprite.Sprite.groups&type=Code
pygame.sprite.groupcollide() - 找到在两组之间发生碰撞的所有精灵
- groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict
- 这将在两组中找到所有精灵之间的碰撞。通过比较每个
Sprite对象
的Sprite.rect属性或使用碰撞函数(如果它不是None)来确定碰撞。 - 如果
dokill1
参数为True
,则将从group1
组中删除碰撞的Sprite对象
。dokill2
相同 - collided 是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为参数,并返回一个 bool 值,指示它们是否发生碰撞。如果 collided 没有指定,则所有精灵必须具有“rect”值,该值是精灵区域的矩形,将用于
默认方法计算碰撞
。
实例:https://github.com/search?q=pygame.sprite.groupcollide&type=Code
pygame.sprite.spritecollide() - 查找组中于其他精灵碰撞的敌机
- spritecollide(sprite, group, dokill, collided = None) -> Sprite_list
- 返回
列表
包含所有发生碰撞
的精灵。通过比较每个Sprite的Sprite.rect属性来确定是否碰撞。 dokill
是bool值。如果设置为True
,指定组中所有发生碰撞的精灵会被删除
- collided 是一个回调函数,用于计算两个精灵是否发生碰撞。它应该将两个精灵作为参数,并返回一个 bool 值,指示它们是否发生碰撞。如果 collided 没有指定,则所有精灵必须具有“rect”值,该值是精灵区域的矩形,将用于
默认方法计算碰撞
。
实例:https://github.com/search?q=pygame.sprite.spritecollide&type=Code
转自:https://www.pygame.org/docs/ref/sprite.html#pygame.sprite