조종 다음은 개발
article thumbnail

FPS : Frame Per Second 

초당 프레임을 말한다. 게임을 하시는 분들은 많이들 들어봤을 것이다.

내가 만드는 게임에도 프레임을 설정 해주려고 했다.

 


clock = pygame.time.Clock()

일단 기존 pygame 모듈 안에서 Clock() 이라는 함수를 호출하여 변수에 저장해주었다.

 

clock.tick(60)

그 다음에 이렇게 해주면 초당 60 프레임이 설정 된다. 즉 초당 60번의 화면을 띄어준다는 의미이다.

 

이 코드를 이벤트 루프에 추가해주면 된다.

 

하지만 여기서 문제가 발생한다.

 

 

문제점


프레임에 따라서 게임에서 캐릭터가 움직이는 속도가 차이가 난다.

 

 

 

30fps                                                                                                   60fps

 

 

프레임이 바뀔때마다 게임에서 캐릭터가 움직이는 속도가 다르면 

 

게임에서 난이도의 변화가 생기기 때문에 프레임에 따라서 게임이 영향을 받으면 안된다.

 

해결책


게임에서 캐릭터가 이동하는 속도의 코드 부분에 프레임을 곱해주면 된다.

 

# 이동속도
character_speed = 0.6

clock = pygame.time.Clock()

# 이벤트 루프
running = True # 게임이 진행중인가?
while running:
    df = clock.tick(60) # 게임 프레임 설정
    # 게임에서 이벤트가 발생할 때
    for event in pygame.event.get():
        if event.type == pygame.QUIT: # 창 닫기 버튼을 눌렀을 떄
            running = False

        if event.type == pygame.KEYDOWN: # 키를 눌렀을 때
            if event.key == pygame.K_LEFT:
                x_to -= character_speed
            elif event.key == pygame.K_RIGHT:
                x_to += character_speed
            elif event.key == pygame.K_UP:
                y_to -= character_speed
            elif event.key == pygame.K_DOWN:
                y_to += character_speed

        if event.type == pygame.KEYUP: # 키를 눌렀다가 뗐을 때
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_to = 0
            if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
                y_to = 0
    character_x_pos += x_to * df
    character_y_pos += y_to * df

 

이렇게 하면 프레임이 바뀌어도 게임에서 캐릭터가 움직이는 속도가 달라지지 않는다.

'풍선 터트리기 게임' 카테고리의 다른 글

게임 만들기 (3) - 충돌설정  (0) 2021.05.09
게임 만들기 (2) - FPS 설정  (0) 2021.05.09
게임 만들기 (1) - 기본설정  (0) 2021.05.09
profile

조종 다음은 개발

@타칸

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!