pygame.Surface.get_rect.get_rect()返回具有
Surface 对象大小的矩形,但是由于 Surface 对象没有位置,因此它返回始终以(0,0)开始的矩形。
Surface放置在
blit显示器上的某个位置。
您必须通过关键字参数来设置矩形的位置,例如:
self.rect = self.image.get_rect(topleft = (self.x, self.y))
或对虚拟属性的分配(请参阅参考资料
pygame.Rect),例如:
self.rect = self.image.get_rect()self.rect.topleft = (self.x, self.y)
绝对没有必要添加一些额外的属性
self.x和
self.y。请改用矩形的位置。例如:
class Ball(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("ball.png") self.rect = self.image.get_rect(topleft = (280, 475)) self.col = False def update(self): gameDisplay.blit(self.image, self.rect) def test_collisions(self,sprite): self.col = pygame.sprite.collide_rect(self,sprite)class Obstacle(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load("obstacle.png") self.time = pygame.time.get_ticks() self.rect = self.image.get_rect(topleft = (1000, 483)) def change_x(self): self.time = pygame.time.get_ticks() self.rect.x = -(self.time/5) + 800 def update(self): gameDisplay.blit(self.image, self.rect)
进一步注意,如果使用和调用(使用包含的sprite的和属性来绘制它们),则可以
Ball.update()分别摆脱方法
Obstacle.update()(可以删除它们)。例如:
pygame.sprite.Group
.draw()
.image``.rect
obstacle = Obstacle()ball = Ball() all_sprites = pygame.sprite.Group([obstacle, ball])while not crashed: # [...] gameDisplay.fill((255,255,255)) all_sprites.draw(gameDisplay) pygame.display.flip() clock.tick(1000)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)