2d 사격 게임의 총알을 만들려고합니다.그룹에 이미있는 개체 업데이트
나는 총알을 만들었고 사용자가 마우스 왼쪽 버튼을 눌렀을 때 화면에 표시되지만 움직여야합니다.
각 글 머리 기호가 글 머리 기호 그룹에 추가됩니다.
글 머리 기호의 위치를 업데이트하는 가장 쉬운 방법은 무엇입니까?
이것은 while 루프입니다. GameClass.Game.getevent가 호출됩니다. lmb가 눌려지면 그 아래의 코드가 실행됩니다. 다음
while play:
display.fill(WHITE)
GameClass.Game.getevent(player1)
platforms.draw(display)
sprites.draw(display)
bullets.draw(display)
pygame.display.update()
다른 파일의 일부입니다. 촬영 기능은 '플레이어'클래스의 일부로, 부적절한 이유로 잘 렸습니다.
def shoot(self):
bullet=Bullet(5,self.bullets,self.x,self.y)
self.bullets.add(bullet)
class Bullet(pygame.sprite.Sprite):
def __init__(self,speed,bullets,x,y):
super().__init__()
self.speed=speed
self.image=pygame.Surface((10,10))
self.rect=self.image.get_rect()
self.bullets=bullets
self.x=x
self.y=y
Bullet.movebullet(self)
def movebullet(self):
self.rect.center=((self.x+self.speed),self.y)
것은 무엇 그룹의 각 개별 총알의 위치를 업데이트하는 가장 좋은 방법은 될 것이라고?
당신의'Bullet' 클래스를 먼저'self.x'와'self.y' 속성을 업데이트하여 스프라이트를 이동 한 후'self.rect 이러한 속성을 지정하는에'update' 방법을 지정 .center'. 스프라이트를 업데이트하려면 각 프레임의'update' 메소드를 호출하면 모든 포함 된 스프라이트의'update' 메소드가 호출됩니다. 총알이 모두 같은 방향이나 임의의 방향으로 움직여야합니까? – skrx
버튼'{}'을 사용하여 코드 – furas
을 올바르게 포맷하려면 모든 스프라이트에'self.x'가 필요하지 않습니다.이 경우'self.rect.x'가 필요합니다. 그리고 나서 'Bullet'대신'self.rect.center = ((self.x + self.speed), self.y)' – furas