我试图在包含两个精灵的游戏循环中只移动一个精灵。我在spr1
方法中添加了Bit.update()
,因此如果按下 w spr1.y -= 60
。换句话说,精灵被分配给self
,希望在按下 w 时只移动spr1
。但是,在当前代码中,按 w 会移动spr1
和spr2
。如何在更新方法中仅引用和更新spr1
?
class Bit(games.Sprite):
def update(self):
if games.keyboard.is_pressed(games.K_w):
self = spr1
self.y -= 60
def main():
spr1_image = games.load_image("spr1.png")
spr1 = Bit(image = spr1_image,
x = games.screen.width / 10,
y = games.screen.height / 10)
spr2_image = games.load_image("spr2.png")
spr2 = Bit(image = spr2_image,
x = games.screen.width * 9 / 10,
y = games.screen.height * 9 / 10)
games.screen.add(spr1)
games.screen.add(spr2)
games.screen.mainloop()
main()
答案 0 :(得分:0)
<强>被修改强> 这两个精灵有不同的行为,所以你需要不同的类。
Bit
中,取出self=spr1
行,您应该没问题。在update()
中,self
是当前精灵的所有内容 - spr1
或spr2
。 在main
中,将spr2
更改为
spr2 = games.Sprite(image = spr2_image, # <---- changed class
x = games.screen.width * 9 / 10,
y = games.screen.height * 9 / 10)
由于spr2
不需要响应键盘,因此不需要games.Sprite
尚未提供的任何行为。因此,您无需使用Bit
。
(警告:我没有使用过livewires,所以我可能会遗漏一些明显的东西:))