[英]Python Pygame get the attributes of a sprite in a sprite group
TL;DR:如何获取精灵组中 object 的属性
我有一个名为“all_bullets”的精灵组。 我正在尝试制作回旋镖引擎,因此当我射击(按空格)时,子弹 object 将添加到 all_bullets 组(我已经编码了 class)。 但是,我不想尽可能多地射击回旋镖。 所以,我只想创建一个子弹 object 当精灵组中没有回旋镖(子弹对象)时,我知道屏幕上没有回旋镖。 但也有其他子弹。 像手枪。 所以我想知道如何获取精灵组内的 object 的 .image 属性; 该组中有多个对象,所以只输入“bullet.image”是行不通的,我试过了。 有什么建议么? 提前致谢
没有任何代码很难回答。 但是您的建议是,直接引用精灵的.image
应该可以。
考虑一个简单的Bullet
精灵:
class BulletSprite( pygame.sprite.Sprite ):
def __init__( self, filename, from_point, to_point, speed=1 ):
pygame.sprite.Sprite.__init__( self )
self.image = pygame.image.load( filename ).convert_alpha()
self.rect = self.image.get_rect()
self.speed = speed
self.rect.center = ( from_point )
self.x = from_point[0]
self.y = from_point[1]
#...
使用精灵组:
all_bullets = pygame.sprite.Group()
# Add some bullets
for i in range( 5 ):
from_point = ( 0, WINDOW_HEIGHT//2 ) # middle left
to_point = ( WINDOW_WIDTH, 100 * i ) # somewhere right
# create the bullet
new_bullet = Bullet( 'bullet.png', from_point, to_point )
all_bullets.add( to_point )
# and one more:
boomerang1 = Bullet( 'boomerang.png', ( 0, 0 ), ( WINDOW_WIDTH, WINDOW_HEIGHT ) )
all_bullets.add( boomerang1 )
现在完全有可能使用/访问单个精灵的.image
成员遍历此列表:
for bullet in all_bullets: # every sprite in the group
window.blit( bullet.image, ( bullet.x, bullet.y ) ) # paint the image
请注意,这可能不是执行此操作的最佳方法,因为对象内部部分最好留给 object 自行使用。 所以在上面的例子中,你会创建一个bullet.draw()
function,并调用它来绘制image
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.