0
파이 게임에서 총알을 만들려고합니다. 죄송합니다. 간단한 수정이 있다면, 나는 지금 생각할 수 없습니다.파이 게임에서 스프라이트 이동 시도
"1"버튼을 누르면 감지됩니다.
if pygame.event.get().type == KEYDOWN and e.key == K_1:
bullet = Bullet()
bullet.rect.x = player.rect.x
bullet.rect.y = player.rect.y
entities.add(bullet)
bullet_list.add(bullet)
bullet.update()
... 이것은 실제 글 머리 기호 클래스입니다. 간격이 조금 벗어났습니다.
class Bullet(pygame.sprite.Sprite):
def __init__(self):
super(Bullet, self).__init__()
self.image = pygame.Surface([4, 10])
self.image.fill(pygame.Color(255, 255, 255))
self.isMoving = False
self.rect = self.image.get_rect()
def update(self):
for i in range(20):
self.rect.x += 3
나는 느린 동작보다 즉시 업데이트 방법을 사용하고 있음을 알고 있습니다. 총알을 어떻게 느리게 움직이게해야합니까? 내가 본 모든 대답은 단지 하나의 객체를 멈추는 대신에 프로그램을 완전히 멈추는 것을 포함합니다. 주위에 방법이 있습니까?
감사합니다! 그것은 그것을 고쳤다. 나는 이미 프로그램에서 clock.tick()을 가지고 있었지만, 나는 당신이 말했던 것처럼 버튼 프레스에 업데이트를 넣고 있었다. 그래서 내가 올바르게 이해한다면, 단지 시간 이벤트를하기 위해 시계를 사용합니까? –
'clock.tick (60)'은 루프가 초당 60 회 이상 실행되지 않도록합니다. 그 루프의 각 단계는 게임의 이산 상태 인 프레임이라고 불립니다. 이것이 초당 프레임 수 (FPS)의 출처입니다. 핵심은 멀티 태스킹 아키텍처를 사용하므로 어떤 작업이라도 다른 모든 작업을 중단시키지 않습니다. 예를 들어 애니메이션을 렌더링하는 경우 사용자 입력을 캡처하기 때문에 이미지를 업데이트 할 수 없습니다. 자세한 내용은 https://en.wikipedia.org/wiki/Game_programming#Game_structure를 참조하십시오. –