gpt4 book ai didi

Pygame sprite 实例影响另一个 sprite 类的位置

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

我正在创建一个太空入侵者类型的游戏,其中一艘船可以从其位置以方向速度发射子弹。

当我从按键输入创建项目符号时,项目符号中的更新方法也会影响玩家的位置和速度,几乎因为它引用与玩家相同的值。我希望子弹从玩家的位置和速度发射。

class Player(pygame.sprite.Sprite):
def __init__(self, bullet_list):
super().__init__()
self.pos = Vector2(100,100)
self.vel = Vector2(1,1)
self.bullet_list = bullet_list

def input(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
self.bullet_list.add(Bullet(self.pos, self.vel))

def update():
self.input()

class Bullet(pygame.sprite.Sprite):
def __init__(self, pos, vel):
super().__init__()
self.pos = pos
self.vel = vel

def update():
self.pos += vel

while True:
bullets = pygame.sprite.group()
players = pygame.sprite.group(Player1(bullets))

bullets.update()
players.update()

尝试在主循环中添加项目符号,但结果相同。

最佳答案

self.bullet_list.add(Bullet(self.pos, self.vel))

通过这一行,您可以使用玩家的位置和速度向量来初始化 Bullet。您将它们交给每个引用的 Bullet 对象,这意味着它们实际上是相同的。子弹接收到的向量的引用点与玩家拥有的向量相同。您要么想要在初始化 Bullet 时制作向量的副本,要么更改 Bullet 类的构造函数以接受您使用的整数或浮点值而不是向量。

关于Pygame sprite 实例影响另一个 sprite 类的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75986778/

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