gpt4 book ai didi

python - 如何在pygame中获取 Sprite 的当前坐标?

转载 作者:行者123 更新时间:2023-12-04 07:58:04 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的游戏,玩家必须躲避敌人或向他们射击。到目前为止,玩家和敌人部分看起来不错,但我被困在导弹的事情上。我试图弄清楚如何在按下鼠标左键时在玩家旁边产生导弹。所以我正在寻找一种方法来获取玩家的当前坐标,在这些坐标的右侧添加一个,如果玩家按下左按钮,导弹的坐标是什么。

class Player(pg.sprite.Sprite):
def __init__(self):
super(Player, self).__init__()
self.surf = pg.image.load("Player.png").convert()
self.surf = pg.transform.smoothscale(self.surf, (75, 75))
self.surf.set_colorkey((255, 255, 255), RLEACCEL)
self.rect = self.surf.get_rect()
def move(self, pressed_keys):
if pressed_keys[K_UP]:
self.rect.move_ip(0, -10)
if pressed_keys[K_DOWN]:
self.rect.move_ip(0, 10)
if pressed_keys[K_LEFT]:
self.rect.move_ip(-10, 0)
if pressed_keys[K_RIGHT]:
self.rect.move_ip(10, 0)
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > SCREEN_WIDTH:
self.rect.right = SCREEN_WIDTH
if self.rect.top <= 0:
self.rect.top = 0
if self.rect.bottom >= SCREEN_HEIGHT:
self.rect.bottom = SCREEN_HEIGHT

class Missile(pg.sprite.Sprite):
def __init__(self):
super(Missile, self).__init__()
self.surf = pg.image.load("Missile.png").convert()
self.surf = pg.transform.smoothscale(self.surf, (20, 20))
self.surf.set_colorkey((0, 0, 0), RLEACCEL)
self.rect = self.surf.get_rect(center=)
def launch(self):
self.rect.move_ip(5, 0)
if self.rect.left < 0:
self.kill()

最佳答案

坐标存储在 rect 中属性。 rect属性是 pygame.Rect object 并指定 Sprite 的边界矩形。它为位置和大小提供了许多虚拟属性。例如, Sprite 的左上角是 self.rect.topleft或 ( self.rect.x , self.rect.y )。
我建议将初始坐标传递给 Missile目的:

class Missile(pg.sprite.Sprite):
def __init__(self, pos):
super(Missile, self).__init__()
self.surf = pg.image.load("Missile.png").convert()
self.surf = pg.transform.smoothscale(self.surf, (20, 20))
self.surf.set_colorkey((0, 0, 0), RLEACCEL)
self.rect = self.surf.get_rect(center = pos)
新时从玩家处获取当前坐标 Missile对象被创建。例如:
missile_pos = player.rect.center
new_missile = Missile(missile_pos)

关于python - 如何在pygame中获取 Sprite 的当前坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66602597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com