문제

어제 피그 게임을 사용하는 방법을 배우기 시작했습니다. 나는 매우 도움이 된이 하나의 책을 읽었으며 모든 튜토리얼과 예제와 물건을 따랐습니다. 정말 간단한 사이드 스크롤러/플랫폼 게임 게임을 만들고 싶었지만 책 Sorta는 3D 모델링으로 꽤 빨리 뛰어 들었습니다.

나는 오늘 모두가 스프라이트를 표시하고 왼쪽과 오른쪽으로 내려 가면서 움직일 수 있도록 보냈다. 그러나 간단한 스크립트로 인해 정적 이미지를 사용하고 변경을 거부합니다.

누구든지 스프라이트를 바꾸는 방법에 대한 지식을 줄 수 있습니까? 아니면 저를 튜토리얼로 보내시겠습니까?

그것을 실험하는 모든 참조와 사람은 항상 생성 된 모양을 사용하고 있으므로 절대 작업 할 수 없습니다.

모든 도움은 대단히 감사합니다.

추가 : 내 장면에 복잡한 애니메이션을 배치하는 방법을 알아 내기 전에 왼쪽이나 오른쪽을 누르는 것과 관련하여 '플레이어'를 움직이지 않는 이미지로 어떻게 변경할 수 있는지 알고 싶습니다. 사람들이 정말로 복잡한 것을 알고 있다면 대각선 일 수도 있습니다.

추가 : 이것은 내가 지금까지 함께 모은 것입니다. http://animania1.ca/showfriends/dev/dirmove.rar 방향/액션을 동작 열을 설정할 가능성이 있습니까? 작은 열 설정 코드가 애니메이션을 수행하기 위해 루프로 순환하게 만들 수 있습니까? (또는 그것은 효율성을 심각하게 놓치게할까요?)

도움이 되었습니까?

해결책

다음은 왼쪽/오른쪽을 누를 때 스프리 시트의 첫 번째 이미지 사이를 알리는 멍청한 예입니다.

import pygame

quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()

# by default, display the first sprite
image_number = 0

while quit == False:
    event = pygame.event.poll()
    no_more_events = True if event == pygame.NOEVENT else False

    # handle events (update game state)
    while no_more_events == False:
        if event.type == pygame.QUIT:
            quit = True
            break
        elif event.type == pygame.NOEVENT:
            no_more_events = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                image_number = 0
            elif event.key == pygame.K_RIGHT:
                image_number = 1

        event = pygame.event.poll()

    if quit == False:
        # redraw the screen
        display.fill(pygame.Color('white'))
        area = pygame.Rect(image_number * 100, 0, 100, 150)
        display.blit(sprite_sheet, (0,0), area)
        pygame.display.flip()

나는 전에 Pygame을 사용한 적이 없으므로이 코드가 실제로 예를 들어 취해지지 않을 것입니다. 그래도 기본 사항을 보여주기를 바랍니다.

더 완료하려면 업데이트하기 전에 시간을 기다려야합니다. 예를 들어 초당 60 회만 업데이트해야합니다.

또한 작업을 단순화하는 스프라이트 수업을 작성하는 것도 편리합니다. 생성자에서 스프라이트 프레임의 크기를 전달하고 다음과 같은 방법이 있습니다. update() 그리고 draw() 다음 프레임을 선택하고 스프라이트를 블리팅하는 작업을 자동으로 수행합니다.

Pygame은 그 목적을 위해 기본 클래스를 제공하는 것 같습니다. 링크 텍스트.

다른 팁

친구 당신이해야 할 유일한 일은 코스를 벗어난 것입니다.

Pygame과 다른 모든 것들이 필요한 유형 코드와 물건을 가져옵니다 .......... 그런 다음 스프리를 만들 때

class .your class nam here. (pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.init(self)
          self.image=pygame.image.load(your image and path)
          self.rect=self.image.get_rect()
          x=0
          y=0

          # any thing else is what you want like posistion and other variables

     def update(self):
          self.rect.move_ip((x,y))

그리고 그게 다야!!!! 그러나 그것은 끝이 아닙니다. 당신이 이것을한다면 당신은 ony를 옮기기 위해 스프라이트를 만들 것입니다.

나는 Pygame에 대해 많이 모르지만 SDL을 사용했습니다 (Pygame이 기반으로).

사용하는 경우 Surface.blit(): 링크 텍스트

선택 사항을 사용할 수 있습니다 area 표면의 어느 부분을 그리는지를 선택하는 인수. 따라서 애니메이션의 일부인 모든 이미지를 단일 파일 안에 넣으면 그릴 이미지를 선택할 수 있습니다. "클리핑"이라고합니다.

게임 상태를 업데이트하는 게임 루프가있을 것 같아 (필요한 경우 스프라이트의 현재 이미지를 변경) 상태를 사용하여 스프라이트를 그립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top